/* Generated by scripts/build_theme_css.py from the source sheets in this folder. Do not edit. */

/* source: fonts.css */
/* Self-hosted Latin fonts (SIL Open Font License, see ../fonts/OFL.txt). Chinese text uses the system font stack. */
@font-face{font-family:"Sora";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/sora-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Sora";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/sora-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Sora";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/sora-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Sora";font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/sora-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Sora";font-style:normal;font-weight:800;font-display:swap;src:url(../fonts/sora-latin-800-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/inter-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/inter-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/inter-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/inter-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* source: tokens.css */
/* Runwise VI 令牌（light），由设计系统 tokens.json v3.10.0 原值转写；本原型不新造颜色。
   组件样式见 ds/runwisevidesignsystem_92731b/components/bundle.css。 */
:root{--font-display:"Sora","Helvetica Neue",Arial,sans-serif;--font-ui-en:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-ui-zh:"Noto Sans SC",-apple-system,BlinkMacSystemFont,"Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;--font-mono:"SFMono-Regular",Consolas,Monaco,monospace}
:root{--rw-blue:#0099f2;--rw-green:#30b545;--rw-violet:#7354bd;--rw-orange:#f57d21;--rw-magenta:#f01a78;--rw-red:#e51414;--rw-ink:#333333;--rw-gray:#989899;--rw-line:#d9dae1;--rw-white:#ffffff;--rw-soft:#f7f8fa;--rw-soft-blue:#e5f6ff;--rw-soft-green:#eef8f0;--rw-soft-violet:#f3f0fa;--rw-soft-orange:#fff3e8;--rw-soft-magenta:#fdecf4;--rw-soft-red:#fdebec;--rw-line-blue:#bfe8ff;--rw-line-green:#d7ebdd;--rw-line-violet:#ded8f0;--rw-line-orange:#f4dec8;--rw-line-red:#f1d0d2;--rw-color-brand-primary:var(--rw-blue);--rw-color-action-primary:#006ead;--rw-color-link:#006ead;--rw-color-info:#00649e;--rw-color-success:#237a32;--rw-color-warning:#b34f0e;--rw-color-danger:#b20f0f;--rw-color-method:var(--rw-violet);--rw-color-editorial:#d11768;--rw-color-text-primary:var(--rw-ink);--rw-color-text-secondary:#5e6063;--rw-color-text-metadata:#6d6d6d;--rw-color-text-inverse:var(--rw-white);--rw-color-on-action:var(--rw-white);--rw-color-on-info:var(--rw-white);--rw-color-on-success:var(--rw-white);--rw-color-on-warning:var(--rw-white);--rw-color-on-danger:var(--rw-white);--rw-color-on-method:var(--rw-white);--rw-color-border:var(--rw-line);--rw-color-border-interactive:#8f9094;--rw-color-border-strong:#8e9097;--rw-color-surface:var(--rw-white);--rw-color-surface-raised:var(--rw-white);--rw-color-canvas:var(--rw-soft);--rw-color-surface-subtle:var(--rw-soft);--rw-color-surface-header:#f5f6f8;--rw-color-surface-info:var(--rw-soft-blue);--rw-color-surface-success:var(--rw-soft-green);--rw-color-surface-method:var(--rw-soft-violet);--rw-color-surface-warning:var(--rw-soft-orange);--rw-color-surface-danger:var(--rw-soft-red);--rw-color-surface-editorial:var(--rw-soft-magenta);--rw-color-focus-ring:var(--rw-violet);--rw-chart-1:var(--rw-blue);--rw-chart-2:#2daa41;--rw-chart-3:var(--rw-violet);--rw-chart-4:#e6761f;--rw-chart-5:var(--rw-magenta);--rw-chart-6:#949495;--rw-chart-7:var(--rw-red);--rw-chart-grid:var(--rw-line);--rw-chart-baseline:var(--rw-gray);--rw-color-surface-hover:#f2f4f7;--rw-color-surface-pressed:#e9ecf1;--rw-color-surface-selected:var(--rw-soft-blue);--rw-color-border-selected:var(--rw-color-action-primary);--rw-color-row-stripe:#fbfbfc;--rw-color-border-hover:#6e7076;--rw-color-action-primary-hover:#005b8f;--rw-color-action-primary-pressed:#004871;--rw-color-danger-hover:#920c0c;--rw-color-danger-pressed:#7a0a0a;--rw-color-ghost-hover:#f2f4f7;--rw-color-ghost-pressed:#e9ecf1;--rw-color-text-disabled:#9a9ca1;--rw-color-surface-disabled:#f2f3f5;--rw-color-border-disabled:#e2e3e8;--rw-color-overlay-scrim:rgba(51,51,51,0.48);--rw-color-skeleton:#eceef2;--rw-color-skeleton-highlight:#f5f6f8;--rw-space-0:0px;--rw-space-1:4px;--rw-space-2:8px;--rw-space-3:12px;--rw-space-4:16px;--rw-space-5:20px;--rw-space-6:24px;--rw-space-8:32px;--rw-space-12:48px;--rw-space-16:64px;--rw-density-scan-paragraph:12px;--rw-density-scan-component:20px;--rw-density-read-paragraph:18px;--rw-density-read-component:28px;--rw-density-audit-paragraph:12px;--rw-density-audit-component:20px;--rw-card-padding:18px;--rw-card-padding-lg:22px;--rw-cell-padding-dense:10px;--rw-radius-none:0px;--rw-radius-sm:8px;--rw-radius-md:12px;--rw-radius-lg:14px;--rw-radius-xl:16px;--rw-radius-hero:18px;--rw-radius-pill:999px;--rw-shadow-none:none;--rw-shadow-card:0 8px 24px rgba(51,51,51,.08);--rw-shadow-overlay:0 16px 40px rgba(51,51,51,.14);--rw-text-hero:42px;--rw-text-display:40px;--rw-text-h1:32px;--rw-text-h2:26px;--rw-text-h3:18px;--rw-text-lead:17px;--rw-text-body:16px;--rw-text-body-sm:14px;--rw-text-table:13px;--rw-text-meta:12px;--rw-text-label:11px;--rw-text-metric:28px;--rw-leading-display:1.12;--rw-leading-heading:1.35;--rw-leading-body:1.75;--rw-leading-body-en:1.6;--rw-leading-table:1.65;--rw-leading-label:1.25;--rw-tracking-display:-0.03em;--rw-tracking-label:0.12em;--rw-tracking-tight:-0.04em;--rw-weight-regular:400;--rw-weight-medium:500;--rw-weight-semibold:600;--rw-weight-bold:700;--rw-weight-black:800;--rw-border-width:1px;--rw-border-accent-width:5px;--rw-signal-bar-height:6px;--rw-editorial-bar-height:4px;--rw-progress-bar-height:4px;--rw-focus-offset:3px;--rw-container-web:1120px;--rw-container-article:960px;--rw-container-wechat:677px;--rw-gutter-web:48px;--rw-gutter-mobile:16px;--rw-touch-target:44px;--rw-row-min-h:44px;--rw-logo-nav-w:66px;--rw-logo-min-w:132px}

/* ---- 原型共用版式（只消费语义令牌） ---- */
body{margin:0;background:var(--rw-color-canvas);color:var(--rw-color-text-primary);font-family:var(--font-ui-zh);font-size:16px;line-height:1.75}
*{box-sizing:border-box}
a{color:var(--rw-color-link)}a:hover{color:var(--rw-color-info)}
:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:3px}
.wrap{max-width:1120px;margin:0 auto;padding:0 48px}
@media (max-width:599px){.wrap{padding:0 16px}}
.eb{font:700 12px/1.25 var(--font-ui-zh);color:var(--rw-color-text-secondary);margin:0}
.eb-latin{font:700 11px/1.25 var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--rw-color-text-secondary)}
.h1{font:700 32px/1.35 var(--font-ui-zh);margin:0}
.h2{font:700 26px/1.35 var(--font-ui-zh);margin:0}
.h3{font:700 18px/1.35 var(--font-ui-zh);margin:0}
.lead{font-size:17px;line-height:1.75;color:var(--rw-color-text-secondary);margin:0}
.meta{font-size:12px;line-height:1.6;color:var(--rw-color-text-metadata)}
.sm{font-size:14px;line-height:1.7}
.num{font-variant-numeric:tabular-nums;font-family:var(--font-display)}
.card{background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;padding:18px}
.card-lg{background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;padding:22px;box-shadow:0 8px 24px rgba(51,51,51,.08)}
.rule-info{border-left:5px solid var(--rw-blue)}
.rule-method{border-left:5px solid var(--rw-violet)}
.rule-warn{border-left:5px solid var(--rw-orange)}
.rule-ok{border-left:5px solid var(--rw-green)}
.rule-risk{border-left:5px solid var(--rw-red)}
.rule-top-info{border-top:5px solid var(--rw-blue)}
.tag{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--rw-color-border);background:var(--rw-color-surface-subtle);color:var(--rw-color-text-secondary);white-space:nowrap}
.tag-fact{background:var(--rw-color-surface-success);border-color:var(--rw-line-green);color:var(--rw-color-success)}
.tag-hyp{background:var(--rw-color-surface-method);border-color:var(--rw-line-violet);color:#5a3fa3}
.tag-unk{background:var(--rw-color-surface-warning);border-color:var(--rw-line-orange);color:var(--rw-color-warning)}
.tag-sim{background:var(--rw-color-surface);border:1px dashed var(--rw-color-border-strong);color:var(--rw-color-text-secondary)}
.tag-risk{background:var(--rw-color-surface-danger);border-color:var(--rw-line-red);color:var(--rw-color-danger)}
.tag-info{background:var(--rw-color-surface-info);border-color:var(--rw-line-blue);color:var(--rw-color-info)}
.sim-band{background:var(--rw-color-surface);border:1px dashed var(--rw-color-border-strong);border-radius:12px;padding:10px 14px;font-size:13px;color:var(--rw-color-text-secondary)}
.nav{background:var(--rw-color-surface);border-bottom:1px solid var(--rw-color-border)}
.navlink{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;color:var(--rw-color-text-primary);text-decoration:none;font-size:15px;font-weight:500;border-radius:8px}
.navlink:hover{background:var(--rw-color-surface-hover);color:var(--rw-color-text-primary);text-decoration:none}
.navlink-on{box-shadow:inset 0 -3px 0 var(--rw-color-action-primary)}
.lnkbtn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:8px;font-weight:600;font-size:15px;text-decoration:none;border:1px solid var(--rw-color-border-interactive);color:var(--rw-color-text-primary);background:var(--rw-color-surface)}
.lnkbtn:hover{background:var(--rw-color-surface-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.lnkbtn-pri{background:var(--rw-color-action-primary);border-color:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
.lnkbtn-pri:hover{background:var(--rw-color-action-primary-hover);color:var(--rw-color-on-action)}
.chip{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--rw-color-border-interactive);background:var(--rw-color-surface);font:500 14px/1 var(--font-ui-zh);color:var(--rw-color-text-primary);cursor:pointer}
.chip:hover{background:var(--rw-color-surface-hover)}
.chip-on{background:var(--rw-color-surface-selected);border-color:var(--rw-color-border-selected);color:var(--rw-color-info);font-weight:700}
.fld{display:flex;flex-direction:column;gap:6px}
.fld label{font-size:14px;font-weight:600}
.inp{min-height:44px;padding:10px 12px;border:1px solid var(--rw-color-border-interactive);border-radius:8px;font:16px/1.6 var(--font-ui-zh);background:var(--rw-color-surface);color:var(--rw-color-text-primary);width:100%}
textarea.inp{min-height:120px;resize:vertical}
.chk{display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:10px 12px;border:1px solid var(--rw-color-border);border-radius:8px;background:var(--rw-color-surface);font-size:14px;cursor:pointer}
.chk input{width:18px;height:18px;margin-top:3px;accent-color:#006ead}
.tbl{width:100%;border-collapse:collapse;font-size:13px;line-height:1.65;font-variant-numeric:tabular-nums}
.tbl th{text-align:left;background:var(--rw-color-surface-header);border-bottom:1px solid var(--rw-color-border-strong);padding:10px 12px;font-weight:700;vertical-align:top}
.tbl td{border-bottom:1px solid var(--rw-color-border);padding:10px 12px;vertical-align:top}
.tbl tr:nth-child(even) td{background:var(--rw-color-row-stripe)}
.tblbox{overflow-x:auto;border:1px solid var(--rw-color-border);border-radius:12px;background:var(--rw-color-surface)}
.signal{height:6px;background:linear-gradient(90deg,#0099f2 0%,#30b545 38%,#7354bd 68%,#f57d21 100%)}
.step{display:flex;gap:0;flex-wrap:wrap}
.step span{flex:1 1 120px;padding:8px 10px;font-size:13px;border-top:4px solid var(--rw-color-border);color:var(--rw-color-text-secondary)}
.step span.on{border-top-color:var(--rw-color-action-primary);color:var(--rw-color-text-primary);font-weight:700}
.step span.done{border-top-color:var(--rw-green);color:var(--rw-color-text-primary)}
.box{border:1px solid var(--rw-color-border-strong);border-radius:12px;padding:10px 12px;background:var(--rw-color-surface);font-size:13px;line-height:1.5}
.arrow{color:var(--rw-color-text-secondary);font-family:var(--font-display);font-weight:700}
.gridcols{display:grid;gap:20px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Five-step colors (signal, breakdown, options, pilot, review). Steps only, never decoration. */
:root{--rw-step-1:var(--rw-blue);--rw-step-2:var(--rw-violet);--rw-step-3:var(--rw-orange);--rw-step-4:var(--rw-green);--rw-step-5:var(--rw-magenta)}

/* source: ds-components.css */
/* Runwise VI — component stylesheet, loaded after tokens.css.
   Every colour, length, size, weight and shadow lives in tokens.json; this file declares only what
   tokens.json cannot hold: font-stack bridges, composites built from tokens, motion, colour-scheme,
   the webfont import and the global base. */

/* Chinese is set in Noto Sans SC (SIL OFL, loaded above) on every platform. PingFang SC was dropped
   in v3.5.0: an Apple face with no web-embedding licence renders on Macs only. */

:root {
  color-scheme: light;

  /* Font stacks — bridged from the tokens' type families */
  --rw-font-display: var(--font-display);
  --rw-font-ui-en: var(--font-ui-en);
  --rw-font-ui-zh: var(--font-ui-zh);
  --rw-font-mono: var(--font-mono);

  /* Composed type roles */
  --rw-type-display: var(--rw-weight-bold) var(--rw-text-display) / var(--rw-leading-display) var(--rw-font-display);
  /* Label: Chinese by contract (v3.7.0); Latin-only labels use type-label-latin */
  --rw-type-label: var(--rw-weight-bold) var(--rw-text-label) / var(--rw-leading-label) var(--rw-font-ui-zh);
  --rw-type-label-latin: var(--rw-weight-bold) var(--rw-text-label) / var(--rw-leading-label) var(--rw-font-display);
  --rw-type-metric: var(--rw-weight-black) var(--rw-text-metric) / 1 var(--rw-font-display);

  /* Structural radius roles (manual §4.5) */
  --rw-radius-container: var(--rw-radius-lg);
  --rw-radius-relational: var(--rw-radius-md);
  --rw-radius-status: var(--rw-radius-pill);
  --rw-radius-sequential: var(--rw-radius-none);
  --rw-radius-callout: 0 var(--rw-radius-lg) var(--rw-radius-lg) 0;

  /* Composite borders, focus and cell padding */
  --rw-border: var(--rw-border-width) solid var(--rw-color-border);
  --rw-focus-ring: 3px solid var(--rw-color-focus-ring);
  --rw-cell-padding: var(--rw-space-3) 14px;

  /* Motion — origin, state change or relationship; never decoration */
  --rw-motion-none: 0ms;
  --rw-motion-instant: 80ms;   /* press feedback only */
  --rw-motion-fast: 120ms;     /* hover / focus / selection */
  --rw-motion-base: 240ms;     /* disclosure, panel state */
  --rw-motion-smooth: 360ms;   /* large but local layout change */
  --rw-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --rw-ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
}
[data-theme="dark"], [data-theme="high-contrast"] { color-scheme: dark; }

@media (prefers-reduced-motion: reduce) {
  :root {
    --rw-motion-instant: 0ms;
    --rw-motion-fast: 0ms;
    --rw-motion-base: 0ms;
    --rw-motion-smooth: 0ms;
  }
}

/* Minimal global base. Components carry their own styling via inline style objects. */
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--rw-color-canvas);
  color: var(--rw-color-text-primary);
  font-family: var(--rw-font-ui-zh);
  font-size: var(--rw-text-body);
  line-height: var(--rw-leading-body);
}
html[lang="en"] body { font-family: var(--rw-font-ui-en); line-height: var(--rw-leading-body-en); }
* { box-sizing: border-box; }
a { color: var(--rw-color-link); text-decoration: none; }
a:hover { color: var(--rw-color-info); text-decoration: underline; }
a:active { color: var(--rw-color-action-primary); }
:focus-visible { outline: var(--rw-focus-ring); outline-offset: var(--rw-focus-offset); }
table { font-variant-numeric: tabular-nums; }

/* source: base.css */
/* v2 高保真版式：只消费 Runwise VI 语义令牌（rw-tokens.css） */
.v2{min-height:100vh;background:var(--rw-color-surface);color:var(--rw-color-text-primary);font-family:var(--font-ui-zh)}
.proto{background:var(--rw-color-surface-subtle);border-bottom:1px dashed var(--rw-color-border-strong);font-size:12px;color:var(--rw-color-text-secondary)}
.proto .wrap{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding-top:6px;padding-bottom:6px}
.topnav{background:var(--rw-color-surface);border-bottom:1px solid var(--rw-color-border)}
.topnav .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;min-height:68px}
.brand{display:flex;align-items:baseline;gap:8px;text-decoration:none;color:var(--rw-color-text-primary);padding-right:12px}
.brand b{font:800 21px/1 var(--font-display);letter-spacing:.02em}
.brand span{font:600 13px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary)}
.tn{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;color:var(--rw-color-text-primary);text-decoration:none;font-size:15px;font-weight:500;border-radius:8px}
.tn:hover{background:var(--rw-color-surface-hover);color:var(--rw-color-text-primary);text-decoration:none}
.tn-on{box-shadow:inset 0 -3px 0 var(--rw-color-action-primary);font-weight:700}
.sec{padding:64px 0}
.sec-tint{background:var(--rw-color-canvas)}
.sec-blue{background:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
.sec-blue a{color:var(--rw-color-on-action)}
.kick{display:flex;align-items:center;gap:10px;font:700 13px/1.3 var(--font-ui-zh);color:var(--rw-color-info);margin:0}
.kick:before{content:"";width:28px;height:4px;background:var(--rw-blue)}
.d1{font:700 44px/1.28 var(--font-ui-zh);margin:0;letter-spacing:-.01em}
.d2{font:700 32px/1.35 var(--font-ui-zh);margin:0}
.d3{font:700 22px/1.4 var(--font-ui-zh);margin:0}
.big{font-size:18px;line-height:1.8;color:var(--rw-color-text-secondary);margin:0}
.g2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:24px}
.g3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:20px}
.g4{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px}
.tile{display:flex;flex-direction:column;gap:8px;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;padding:22px;text-decoration:none;color:var(--rw-color-text-primary)}
a.tile:hover{border-color:var(--rw-color-border-hover);box-shadow:0 8px 24px rgba(51,51,51,.08);text-decoration:none;color:var(--rw-color-text-primary)}
.tile .go{margin-top:auto;font-weight:700;color:var(--rw-color-link);font-size:15px}
.paper{background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;box-shadow:0 16px 40px rgba(51,51,51,.14);padding:28px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:8px;font:700 16px/1 var(--font-ui-zh);text-decoration:none;border:1px solid var(--rw-color-border-interactive);background:var(--rw-color-surface);color:var(--rw-color-text-primary);cursor:pointer}
.btn:hover{background:var(--rw-color-surface-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.btn-pri{background:var(--rw-color-action-primary);border-color:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
.btn-pri:hover{background:var(--rw-color-action-primary-hover);color:var(--rw-color-on-action)}
.btn-inv{background:var(--rw-color-surface);color:var(--rw-color-action-primary);border-color:var(--rw-color-surface)}
.btn-inv:hover{background:var(--rw-soft-blue);color:var(--rw-color-action-primary)}
.seg{display:flex;flex-wrap:wrap;gap:6px;padding:4px;background:var(--rw-color-surface-subtle);border:1px solid var(--rw-color-border);border-radius:12px}
.seg button{min-height:var(--rw-touch-target);padding:0 14px;border:0;border-radius:8px;background:none;font:600 14px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary);cursor:pointer}
.seg button.on{background:var(--rw-color-surface);color:var(--rw-color-text-primary);box-shadow:0 1px 3px rgba(51,51,51,.15)}
.kv{display:grid;grid-template-columns:110px 1fr;gap:10px 14px;font-size:15px;line-height:1.6}
.kv dt{color:var(--rw-color-text-secondary);font-weight:600}
.kv dd{margin:0}
.num{font-variant-numeric:tabular-nums;font-family:var(--font-display)}
.stat b{display:block;font:800 30px/1.1 var(--font-display)}
.stat span{font-size:13px;color:var(--rw-color-text-secondary)}
.art{max-width:760px}
.art p{font-size:17px;line-height:1.9;margin:0 0 18px}
.art h2{font:700 24px/1.45 var(--font-ui-zh);margin:36px 0 14px}
.art blockquote{margin:0 0 18px;padding:14px 18px;border-left:5px solid var(--rw-blue);background:var(--rw-color-surface-info);font-size:16px}
.foot{background:var(--rw-ink);color:#e9eaee}
.foot a{color:#e9eaee}
.foot .meta{color:#c4c6cc}
.chipline{display:flex;flex-wrap:wrap;gap:6px}
.step3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:0;border-top:4px solid var(--rw-color-border)}
.step3>div{padding:14px 16px 0 0}
.step3 b{display:block;font:800 13px/1 var(--font-display);color:var(--rw-color-info);margin-bottom:6px}
@media (max-width:599px){.d1{font-size:32px}.d2{font-size:26px}.sec{padding:40px 0}.kv{grid-template-columns:1fr}}

/* ---- v2.1：图标、生成式 UI、插画 ---- */
.ico{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.ico-sm{width:18px;height:18px}
.ico-lg{width:32px;height:32px;stroke-width:1.5}
.ibox{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:var(--rw-color-surface-info);color:var(--rw-color-info);flex:none}
.ibox.v{background:var(--rw-color-surface-method);color:#5a3fa3}
.ibox.g{background:var(--rw-color-surface-success);color:var(--rw-color-success)}
.ibox.o{background:var(--rw-color-surface-warning);color:var(--rw-color-warning)}
.ibox.m{background:var(--rw-color-surface-editorial);color:var(--rw-color-editorial)}
.ibox.k{background:var(--rw-color-surface-subtle);color:var(--rw-color-text-primary)}
.irow{display:flex;align-items:center;gap:10px}
.composer{background:var(--rw-color-surface);border:2px solid var(--rw-color-action-primary);border-radius:18px;padding:14px 14px 10px;box-shadow:0 16px 40px rgba(51,51,51,.14);display:flex;flex-direction:column;gap:10px}
.composer textarea{border:0;outline:none;resize:none;font:18px/1.6 var(--font-ui-zh);color:var(--rw-color-text-primary);min-height:64px;background:transparent;width:100%}
.composer textarea:focus-visible{outline:none}
.composer:focus-within{box-shadow:0 0 0 3px var(--rw-violet),0 16px 40px rgba(51,51,51,.14)}
.sugg{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--rw-color-border);background:var(--rw-color-surface);font:500 13px/1 var(--font-ui-zh);color:var(--rw-color-text-primary);cursor:pointer}
.sugg:hover{border-color:var(--rw-color-border-hover);background:var(--rw-color-surface-hover)}
.sugg.on{border-color:var(--rw-color-border-selected);background:var(--rw-color-surface-selected);color:var(--rw-color-info);font-weight:700}
.gen{border:1px solid var(--rw-line-violet);background:var(--rw-color-surface);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:10px}
.gen-h{display:flex;align-items:center;gap:8px;font:700 12px/1 var(--font-ui-zh);color:#5a3fa3}
.why{font-size:13px;line-height:1.6;color:var(--rw-color-text-secondary);background:var(--rw-color-surface-subtle);border-radius:8px;padding:8px 10px}
.skel{background:var(--rw-color-skeleton);border-radius:6px;height:12px}
.skel-card{border:1px dashed var(--rw-color-border);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:10px}
.dom{display:flex;flex-direction:column;gap:10px;align-items:flex-start;text-align:left;padding:18px;border-radius:14px;border:1px solid var(--rw-color-border);background:var(--rw-color-surface);cursor:pointer;font:inherit;color:var(--rw-color-text-primary);min-height:44px}
.dom:hover{border-color:var(--rw-color-border-hover);box-shadow:0 8px 24px rgba(51,51,51,.08)}
.dom.on{border:2px solid var(--rw-color-action-primary);background:var(--rw-color-surface-selected)}
.vcard{display:flex;flex-direction:column;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;overflow:hidden;text-decoration:none;color:var(--rw-color-text-primary)}
a.vcard:hover{box-shadow:0 8px 24px rgba(51,51,51,.08);text-decoration:none;color:var(--rw-color-text-primary)}
.cover{height:150px;display:flex;align-items:center;justify-content:center;position:relative}
.vcard .bd{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
@media (max-width:1023px){.grid3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:599px){.grid3{grid-template-columns:1fr}}
.illus{width:100%;aspect-ratio:1.82;object-fit:cover;border-radius:14px;display:block;background:var(--rw-color-surface-subtle)}
.trace{display:flex;flex-direction:column;gap:0}
.trace .t{display:flex;gap:12px;align-items:flex-start;padding:10px 0;position:relative}
.trace .dot{width:26px;height:26px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font:800 12px/1 var(--font-display);flex:none;background:var(--rw-color-surface-subtle);color:var(--rw-color-text-secondary);border:1px solid var(--rw-color-border)}
.trace .dot.done{background:var(--rw-green);border-color:var(--rw-green);color:#fff}
.trace .dot.on{background:var(--rw-color-action-primary);border-color:var(--rw-color-action-primary);color:#fff}
.bubble{background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:4px 14px 14px 14px;padding:12px 14px;font-size:15px;line-height:1.7}
.bubble.me{background:var(--rw-color-surface-info);border-color:var(--rw-line-blue);border-radius:14px 4px 14px 14px;align-self:flex-end}
.blockact{display:flex;flex-wrap:wrap;gap:6px;border-top:1px solid var(--rw-color-border);padding-top:10px}
.blockact button{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 10px;border-radius:8px;border:1px solid var(--rw-color-border);background:var(--rw-color-surface);font:500 12px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary);cursor:pointer}
.blockact button:hover{color:var(--rw-color-text-primary);border-color:var(--rw-color-border-hover)}
.dots{display:flex;gap:8px;align-items:center}
.dots button{width:10px;height:10px;border-radius:999px;border:0;padding:0;background:var(--rw-color-border-strong);cursor:pointer}
.dots button.on{width:26px;background:var(--rw-color-action-primary)}
/* v2.2 — critique fixes */
.tag:empty{display:none}
.btn,.chip,.sugg,.blockact button{white-space:nowrap}
.mnav{display:none;margin-left:auto}
.mnav>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border:1px solid var(--rw-color-border-interactive);border-radius:8px;font:700 15px/1 var(--font-ui-zh);cursor:pointer}
.mnav>summary::-webkit-details-marker{display:none}
.mnav[open]>div{position:absolute;left:0;right:0;top:100%;background:var(--rw-color-surface);border-bottom:1px solid var(--rw-color-border);box-shadow:0 12px 24px rgba(16,24,40,.08);padding:8px 16px 16px;display:flex;flex-direction:column;z-index:20}
.mnav[open]>div a{min-height:48px;display:flex;align-items:center;border-bottom:1px solid var(--rw-color-border);color:var(--rw-color-text-primary);text-decoration:none;font-size:16px}
.topnav{position:relative}
@media (max-width:760px){.dnav,.topnav .wrap>a.tn,.topnav .wrap>a.btn{display:none!important}.mnav{display:block}.topnav .wrap{flex-wrap:nowrap;min-height:60px}}
.consult{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;border:1px solid var(--rw-color-border);border-left:4px solid var(--rw-color-action-primary);border-radius:12px;background:var(--rw-color-surface);padding:20px 22px}
.consult .qr{width:96px;height:96px;border:1px dashed var(--rw-color-border-strong);border-radius:8px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;color:var(--rw-color-text-secondary);background:var(--rw-color-surface-subtle)}
@media (max-width:599px){.consult{grid-template-columns:1fr}.consult .qr{display:none}}
.ba{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--rw-color-border);border-radius:12px;overflow:hidden;background:var(--rw-color-surface)}
.ba>div{padding:20px 22px;display:flex;flex-direction:column;gap:8px}
.ba>div+div{border-left:1px solid var(--rw-color-border);background:var(--rw-color-surface-info)}
.ba .lbl{font:800 12px/1 var(--font-display);letter-spacing:.12em;color:var(--rw-color-text-secondary)}
@media (max-width:760px){.ba{grid-template-columns:1fr}.ba>div+div{border-left:0;border-top:1px solid var(--rw-color-border)}}
.cols3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cols5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:1023px){.cols5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.cols3,.cols5{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:420px){.cols3,.cols5{grid-template-columns:1fr}}
.inp-area{width:100%;box-sizing:border-box;min-height:72px;resize:vertical;font:400 15px/1.6 var(--font-ui-zh);padding:10px 12px;border:1px solid var(--rw-color-border-interactive);border-radius:8px}
.stuck{border:1px dashed #b54708;color:#b54708;background:#fffaeb;border-radius:999px;min-height:28px;padding:0 12px;font:600 12px/1 var(--font-ui-zh);cursor:pointer}
.trace-mini{display:none}
@media (max-width:760px){.trace-full{display:none}.trace-mini{display:flex;align-items:center;gap:10px;font-weight:700}.msgs .bubble{display:none}.msgs .bubble:last-child{display:block}.ws-aside{order:2}.ws-main{order:1}}
.legend{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--rw-color-text-secondary)}
.rail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-top:1px solid var(--rw-color-border)}
.rail a{display:flex;flex-direction:column;gap:6px;padding:16px 16px 16px 0;border-bottom:1px solid var(--rw-color-border);text-decoration:none;color:var(--rw-color-text-primary)}
.rail a strong{line-height:1.55}
@media (max-width:760px){.rail{grid-template-columns:1fr}}
.cover{height:128px}
.cover-lbl{position:absolute;left:16px;bottom:12px;font:700 12px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary);background:rgba(255,255,255,.85);padding:6px 10px;border-radius:999px}
@media (max-width:760px){.brow{grid-template-columns:24px 1fr!important}.brow>span:last-child{grid-column:2}.trace-card{display:none}}
.rvt{border:1px solid var(--rw-color-border);border-radius:12px;overflow:hidden;background:var(--rw-color-surface)}
.rvr{display:grid;grid-template-columns:1.1fr 1.4fr 1.4fr 1.3fr;gap:16px;padding:14px 18px;border-top:1px solid var(--rw-color-border);font-size:15px;line-height:1.6}
.rvr:first-child{border-top:0}
.rvh{background:var(--rw-color-surface-subtle);font-weight:700;font-size:14px}
.rvr em{display:none;font-style:normal;font-size:12px;font-weight:700;color:var(--rw-color-text-secondary);margin-right:8px}
@media (max-width:760px){.rvh{display:none}.rvr{grid-template-columns:1fr;gap:6px}.rvr em{display:inline}}
.mbar{display:none}
@media (max-width:760px){.mbar{display:flex;gap:8px;position:sticky;bottom:0;z-index:15;background:var(--rw-color-surface);border-top:1px solid var(--rw-color-border);padding:10px 0;margin:0 -16px;padding-left:16px;padding-right:16px}.mbar .btn{flex:1;padding:0 10px}}

/* source: components.css */
/* v3 · Decision Loop 版式（在 rw-tokens.css 与 v2.css 之上，只用语义令牌） */
.s1{--sc:var(--rw-color-info);--sb:var(--rw-color-surface-info);--sl:var(--rw-blue)}
.s2{--sc:#5a3fa3;--sb:var(--rw-color-surface-method);--sl:var(--rw-violet)}
.s3{--sc:var(--rw-color-warning);--sb:var(--rw-color-surface-warning);--sl:var(--rw-orange)}
.s4{--sc:var(--rw-color-success);--sb:var(--rw-color-surface-success);--sl:var(--rw-green)}
.s5{--sc:var(--rw-color-editorial);--sb:var(--rw-color-surface-editorial);--sl:var(--rw-magenta)}
.sbadge{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:0 10px 0 8px;border-radius:999px;background:var(--sb);color:var(--sc);font:700 12px/1 var(--font-ui-zh);white-space:nowrap}
.sbadge .ico{width:14px;height:14px;stroke-width:2}
.sbadge em{font-style:normal;font:600 12px/1 var(--font-display);opacity:.85}
.sbox{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:var(--sb);color:var(--sc);flex:none}
/* 步骤条 */
.srail{display:flex;flex-direction:column;gap:4px}
.srail a,.srail button{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 10px;border-radius:10px;border:1px solid transparent;background:none;text-align:left;text-decoration:none;color:var(--rw-color-text-primary);font:inherit;cursor:pointer;width:100%}
.srail a:hover,.srail button:hover{background:var(--rw-color-surface-hover)}
.srail .n{width:28px;height:28px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font:800 12px/1 var(--font-display);background:var(--sb);color:var(--sc);flex:none}
.srail .on{border-color:var(--sl);background:var(--sb)}
.srail .on .n{background:var(--sc);color:#fff}
.srail .done .n{background:var(--rw-color-success);color:#fff}
.srail small{display:block;font:600 12px/1.2 var(--font-display);color:var(--rw-color-text-secondary)}
/* 横向五步条 */
.loopbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.loopbar>div{border-top:4px solid var(--sl);padding:12px 4px 0;display:flex;flex-direction:column;gap:4px}
.loopbar b{font:700 15px/1.3 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.loopbar span{font:600 12px/1.2 var(--font-display);color:var(--sc)}
@media (max-width:760px){.loopbar{grid-template-columns:1fr}.loopbar>div{border-top:0;border-left:4px solid var(--sl);padding:6px 0 6px 12px}}
/* 五段环 */
.ring{width:100%;max-width:340px;aspect-ratio:1;display:block;margin:0 auto}
.ring text{font-family:var(--font-ui-zh)}
/* 内容卡 3×4 */
.cg4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media (max-width:1023px){.cg4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:599px){.cg4{grid-template-columns:1fr}}
.ccard{display:flex;flex-direction:column;gap:8px;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;padding:16px;text-decoration:none;color:var(--rw-color-text-primary);position:relative;border-top:4px solid var(--sl)}
a.ccard:hover{box-shadow:0 8px 24px rgba(51,51,51,.08);text-decoration:none;color:var(--rw-color-text-primary)}
.ccard .t{font:700 16px/1.5 var(--font-ui-zh);margin:0}
.ccard .p{font-size:13px;line-height:1.65;color:var(--rw-color-text-secondary);margin:0}
.ccard .m{margin-top:auto;font-size:12px;color:var(--rw-color-text-metadata)}
.ccard .new{position:absolute;top:12px;right:12px;font:700 12px/1 var(--font-ui-zh);color:var(--rw-color-editorial);background:var(--rw-color-surface-editorial);border-radius:999px;padding:4px 8px}
.coltag{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:6px;background:var(--rw-color-surface-subtle);border:1px solid var(--rw-color-border);font:600 12px/1 var(--font-ui-zh);color:var(--rw-color-text-primary)}
/* The six growth-problem domains (render/parts.php runwise_experience_domain_tag, Jackie 2026-11-07):
   each has one icon and one accent, kept apart from the five step colours so a domain never reads as a
   step. The accent colours the icon only; chip text stays the body ink (AA on every chip). Problem
   cards also carry the domain's icon large and faint in their lower right. */
[data-domkey="strategy"]{--rw-dom:#2b5797}
[data-domkey="product"]{--rw-dom:#0f7d76}
[data-domkey="organization"]{--rw-dom:#8a6100}
[data-domkey="ai-native"]{--rw-dom:#4b55c8}
[data-domkey="operations"]{--rw-dom:#a33e5c}
[data-domkey="analytics"]{--rw-dom:#4f6f22}
.rw-domtag,.rw-domchip{display:inline-flex;align-items:center;gap:4px}
.rw-domtag .ico,.rw-domchip .ico,[data-domkey]>.ico{width:15px;height:15px;flex:none;color:var(--rw-dom,currentColor);--ico-ac:var(--rw-dom,currentColor)}
.hcard[data-domkey]{position:relative;overflow:hidden;isolation:isolate}
.hcard .rw-dommark{position:absolute;right:-10px;bottom:-10px;width:96px;height:96px;z-index:-1;color:var(--rw-dom);--ico-ac:var(--rw-dom);opacity:.16;pointer-events:none}
.hcard .rw-dommark path{fill:none!important;stroke:var(--rw-dom)!important;stroke-width:1.5;opacity:1}
.indtag{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:6px;background:var(--rw-color-surface-info);font:600 12px/1 var(--font-ui-zh);color:var(--rw-color-info)}
.hide-m{}
@media (max-width:599px){.hide-m{display:none!important}}
/* 页头补充 */
.hdr-r{display:flex;align-items:center;gap:8px;margin-left:auto}
.dot-red{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--rw-red);margin-left:4px}
.dd{position:relative}
.dd>summary{list-style:none;display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border-radius:8px;font-size:15px;font-weight:500;cursor:pointer}
.dd>summary::-webkit-details-marker{display:none}
.dd>summary:hover{background:var(--rw-color-surface-hover)}
.dd[open]>div{position:absolute;top:100%;left:0;z-index:30;min-width:240px;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:12px;box-shadow:0 16px 40px rgba(51,51,51,.14);padding:8px;display:flex;flex-direction:column}
.dd[open]>div a{padding:10px 12px;border-radius:8px;text-decoration:none;color:var(--rw-color-text-primary);font-size:14px}
.dd[open]>div a:hover{background:var(--rw-color-surface-hover)}
.dd .on>summary,.dd.on>summary{box-shadow:inset 0 -3px 0 var(--rw-color-action-primary);font-weight:700}
/* 手机底部标签 */
.tabbar{display:none}
@media (max-width:760px){.tabbar{display:grid;grid-template-columns:repeat(4,1fr);position:sticky;bottom:0;z-index:40;background:var(--rw-color-surface);border-top:1px solid var(--rw-color-border)}
.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;font-size:12px;color:var(--rw-color-text-secondary);text-decoration:none}
.tabbar a.on{color:var(--rw-color-action-primary);font-weight:700}}
/* 承诺条 */
.promise{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--rw-color-text-secondary)}
.promise span{display:inline-flex;align-items:center;gap:4px}
/* 证据标签 */
.src{font-size:12px;color:var(--rw-color-text-metadata)}
.ver{display:inline-flex;align-items:center;min-height:20px;padding:0 6px;border-radius:4px;font:600 12px/1 var(--font-ui-zh);background:var(--rw-color-surface-warning);color:var(--rw-color-warning)}
/* 墙 */
.wall{border:2px dashed var(--rw-color-action-primary);border-radius:14px;padding:22px;background:var(--rw-color-surface-info);display:flex;flex-direction:column;gap:12px}
.locked{opacity:.45;pointer-events:none;filter:grayscale(.3)}
/* 列表行 */
.qrow{display:grid;grid-template-columns:36px 1fr auto;gap:14px;align-items:center;padding:14px 4px;border-bottom:1px solid var(--rw-color-border);text-decoration:none;color:var(--rw-color-text-primary)}
a.qrow:hover{background:var(--rw-color-surface-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.qrow .rk{font:800 18px/1 var(--font-display);color:var(--rw-color-text-secondary);text-align:center}
.prep{display:inline-flex;gap:3px}
.prep i{width:10px;height:10px;border-radius:3px;background:var(--rw-color-border)}
.prep i.f{background:var(--sl)}
@media (max-width:599px){.qrow{grid-template-columns:28px 1fr}.qrow .prep{display:none}}
.wsx{display:grid;grid-template-columns:260px minmax(0,1fr);gap:24px;align-items:start}
@media (max-width:900px){.wsx{grid-template-columns:1fr}.wsx>aside{position:static!important}}
.sticky{position:sticky;top:16px}
.ai3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:760px){.ai3{grid-template-columns:1fr}}
.lane{border:1px solid var(--rw-color-border);border-radius:12px;padding:14px;background:var(--rw-color-surface);display:flex;flex-direction:column;gap:6px}
.lane h4{margin:0;font:700 13px/1.3 var(--font-ui-zh);display:flex;gap:6px;align-items:center}
.lane p{margin:0;font-size:14px;line-height:1.65}
.flow{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.flow .fb{border:1px solid var(--rw-color-border);border-radius:10px;padding:10px 12px;background:var(--rw-color-surface);font-size:13px;line-height:1.5;min-width:150px;flex:1}
.flow .ar{color:var(--rw-color-text-secondary)}
.colhead{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:900px){.colhead{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pill-sw{display:flex;flex-wrap:wrap;gap:6px}
.toc a{display:block;padding:6px 0;font-size:14px;text-decoration:none}
.rvr .sbadge{justify-self:start}
.artgrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;align-items:start}
@media (max-width:900px){.artgrid{grid-template-columns:1fr}.artgrid aside{position:static!important}}
.applyg{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
@media (max-width:760px){.applyg{grid-template-columns:1fr}}
.show-m{display:none}
@media (max-width:900px){.show-m{display:flex}.hide-t{display:none!important}}
.wbstep{border:1px solid var(--rw-color-border);border-top:5px solid var(--sl);border-radius:14px;background:var(--rw-color-surface);padding:22px;display:flex;flex-direction:column;gap:14px}
.judge{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px solid var(--rw-color-border);padding-top:12px}
.statepill{font:700 12px/1 var(--font-ui-zh);padding:4px 8px;border-radius:999px;background:var(--rw-color-surface-subtle);color:var(--rw-color-text-secondary)}
.sk{--sc:#333;--sb:var(--rw-color-surface-subtle);--sl:var(--rw-color-border-strong)}
/* v3 移动端修正 */
@media (max-width:760px){
.hdr-r .tn{display:none!important}
.hdr-r .btn{padding:0 12px!important;min-height:var(--rw-touch-target)!important;font-size:13px!important}
.hdr-r{gap:6px}
.mnav>summary{padding:0 10px}
.sugg{max-width:100%;white-space:normal;line-height:1.35;text-align:left;padding-top:6px;padding-bottom:6px;height:auto}
.rvr{grid-template-columns:1fr!important;gap:4px!important}
.rvh{display:none!important}
}
@media (max-width:760px){.flow{flex-direction:column;align-items:stretch}.flow .ar{align-self:center;transform:rotate(90deg);line-height:1}.flow .fb{min-width:0}}
.g5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:1023px){.g5{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:599px){.g5{grid-template-columns:1fr}}
/* 本季增长难题 · 卡片 */
.hgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
@media (max-width:1180px){.hgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:860px){.hgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.hgrid{grid-template-columns:1fr}}
.hcard{position:relative;display:flex;flex-direction:column;gap:10px;padding:16px 16px 14px;border:1px solid var(--rw-color-border);border-radius:14px;background:var(--rw-color-surface);text-decoration:none;color:var(--rw-color-text-primary);transition:box-shadow .15s,transform .15s,border-color .15s;min-width:0}
.hcard:hover{box-shadow:0 12px 28px rgba(51,51,51,.12);transform:translateY(-2px);border-color:var(--rw-color-border-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.hcard.full{border:1.5px solid var(--rw-color-action-primary);box-shadow:0 8px 24px rgba(0,110,173,.10)}
.hcard.full::before{content:"完整方案";position:absolute;top:-1px;right:14px;padding:3px 8px;border-radius:0 0 6px 6px;background:var(--rw-color-action-primary);color:#fff;font:700 12px/1.2 var(--font-ui-zh)}
.hc-top{display:flex;align-items:center;gap:10px}
.hc-rk{font:800 30px/1 var(--font-display);letter-spacing:-.03em;color:var(--rw-color-text-primary)}
.hcard:not(.full) .hc-rk{color:#8e9097}
.hc-top .indtag{gap:4px}
.hc-top .indtag svg{width:13px;height:13px}
.hc-t{font:700 16px/1.5 var(--font-ui-zh);min-height:72px}
.hc-ev{margin:0;font-size:12px;line-height:1.55;color:var(--rw-color-text-secondary);border-left:3px solid var(--rw-color-border);padding-left:8px}
.hc-ev b{display:block;font-size:12px;color:var(--rw-color-text-metadata);font-weight:700}
.hc-ev span{display:block;font-size:12px;color:var(--rw-color-text-metadata);margin-top:2px}
.hc-stuck{display:flex;flex-direction:column;gap:4px;margin-top:auto}
.hc-stuck .sbadge{align-self:flex-start}
.hc-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid var(--rw-color-border);padding-top:10px}
.hc-cta{margin-left:auto;font:700 13px/1.3 var(--font-ui-zh);color:var(--rw-color-action-primary)}
@media (max-width:560px){.hc-t{min-height:0}}
/* Decision Loop 插画 */
.dlwrap{width:100%;min-width:0}
.dlart{display:block;width:100%;height:auto}
.dlart .st{transition:opacity .2s}
.dlwrap.a1 .st:not(.st1),.dlwrap.a2 .st:not(.st2),.dlwrap.a3 .st:not(.st3),.dlwrap.a4 .st:not(.st4),.dlwrap.a5 .st:not(.st5){opacity:.3}
@media (max-width:560px){.hgrid.swipe-m{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:82%;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px;margin-right:-16px;padding-right:16px}.hgrid.swipe-m>.hcard{scroll-snap-align:start}}
.dl-m{display:none}
@media (max-width:599px){.dl-d{display:none}.dl-m{display:block}}
.dlcore{display:flex;flex-direction:column;gap:10px;align-items:center}
.dlchips{display:flex;flex-wrap:wrap;gap:6px 4px;justify-content:center;align-items:center}
.dlchips .dlarr{color:var(--rw-color-text-secondary);font-size:12px}
.dlcap{margin:0;font-size:12px;line-height:1.5;color:var(--rw-color-editorial);text-align:center;font-weight:600}
.dlwrap.a1 .dlchips .sbadge:not(.s1),.dlwrap.a2 .dlchips .sbadge:not(.s2),.dlwrap.a3 .dlchips .sbadge:not(.s3),.dlwrap.a4 .dlchips .sbadge:not(.s4),.dlwrap.a5 .dlchips .sbadge:not(.s5){opacity:.35}
.dlsrc{margin:8px 0 0;text-align:center;font-size:12px;line-height:1.6}
/* v3.2 简化：每行最多 3 张，卡片只留 4 层信息 */
.cg4{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
@media (max-width:1023px){.cg4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:599px){.cg4{grid-template-columns:1fr}}
.ccard{padding:20px;gap:10px}
.ccard .t{font-size:17px}
.ccard .p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ccard .kick2{font:600 12px/1.4 var(--font-ui-zh);color:var(--rw-color-text-secondary)}
.ccard .kick2 b{color:var(--sc);font-weight:700}
/* 本季增长难题：完整方案大卡 + 简版小卡 */
.hfull{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.hlite{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:860px){.hlite{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:599px){.hfull,.hlite{grid-template-columns:1fr}}
.hcard{padding:22px 22px 18px;gap:12px}
.hcard.full{padding:26px 26px 22px}
.hcard.full .hc-t{font-size:20px;line-height:1.45;min-height:0}
.hcard .hc-t{min-height:0}
.hcard:not(.full) .hc-t{font-size:16px}
.hcard .hc-start{font-size:14px;color:var(--rw-color-text-secondary);margin:0}
.hcard .hc-start b{color:var(--rw-color-text-primary)}
.hcard .hc-cta{margin-left:0;margin-top:auto}
.hc-rk{font-size:22px}
.hcard.full .hc-rk{font-size:26px}
.hsub{font:700 15px/1.4 var(--font-ui-zh);margin:8px 0 0}
/* 竖排步骤 */
.steprows{display:flex;flex-direction:column;border:1px solid var(--rw-color-border);border-radius:14px;background:var(--rw-color-surface);overflow:hidden}
.steprow{display:grid;grid-template-columns:200px minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start;padding:16px 20px;border-left:5px solid var(--sl);border-bottom:1px solid var(--rw-color-border)}
.steprow:last-child{border-bottom:0}
.steprow .sn{display:flex;flex-direction:column;gap:2px}
.steprow .sn b{font:800 17px/1.3 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.steprow .sn span{font-size:13px;color:var(--sc);font-weight:600}
.steprow p{margin:0;font-size:14px;line-height:1.65}
.steprow .lab{display:block;font-size:12px;color:var(--rw-color-text-metadata);font-weight:600;margin-bottom:2px}
@media (max-width:760px){.steprow{grid-template-columns:1fr;gap:8px}}
/* 三步上手 */
.howto{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;counter-reset:h}
.howto>div{display:flex;gap:14px;align-items:flex-start;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:14px;padding:20px}
.howto .hn{flex:none;width:36px;height:36px;border-radius:999px;background:var(--rw-color-action-primary);color:#fff;display:flex;align-items:center;justify-content:center;font:800 16px/1 var(--font-display)}
.howto strong{display:block;font-size:16px;margin-bottom:4px}
.howto p{margin:0;font-size:14px;line-height:1.6;color:var(--rw-color-text-secondary)}
@media (max-width:760px){.howto{grid-template-columns:1fr}}
.colpills{display:flex;flex-wrap:wrap;gap:8px}
.coldesc{margin:0;font-size:14px;color:var(--rw-color-text-secondary)}
details.ck{font-size:12px;color:var(--rw-color-text-metadata)}
details.ck summary{cursor:pointer}
/* 原型与内部标注：访客和会员默认看不到；本地或 Dev 打开标注开关（body.rw-annotations）时才显示 */
body:not(.rw-annotations) :is(.pl,.rw-annotation){display:none!important}
.rw-annotations :is(.pl,.rw-annotation){outline:1px dashed rgba(209,23,104,.35);outline-offset:1px}
/* 站内搜索 */
.srchbtn{display:inline-flex;align-items:center;gap:6px;min-height:var(--rw-touch-target);padding:0 10px;border:1px solid var(--rw-color-border);border-radius:8px;background:var(--rw-color-surface);font:500 14px/1 var(--font-ui-zh);color:var(--rw-color-text-primary);cursor:pointer}
.srchbtn:hover{background:var(--rw-color-surface-hover)}
.srch{border-top:1px solid var(--rw-color-border);background:var(--rw-color-surface);box-shadow:0 12px 24px rgba(16,24,40,.06)}
.srch .wrap{display:flex;flex-direction:column;gap:12px;padding-top:16px;padding-bottom:20px}
.srgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
@media (max-width:760px){.srgrid{grid-template-columns:1fr}}
.srrow{display:flex;flex-direction:column;gap:2px;padding:8px 0;border-bottom:1px solid var(--rw-color-border);text-decoration:none;color:var(--rw-color-text-primary)}
.srrow:hover{text-decoration:none;color:var(--rw-color-action-primary)}
/* v3.3 工作台就地修改 */
.youq{margin:0;padding:10px 12px;border-radius:10px;background:var(--rw-color-surface-subtle);font-weight:600;line-height:1.6;display:flex;flex-direction:column;gap:2px}
.erow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;padding:8px 0;border-bottom:1px solid var(--rw-color-border)}
.erow .et{font-size:14px;line-height:1.6;min-width:0}
.erow .et .inp{width:100%;min-height:36px}
.eact{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.lnk{border:0;background:none;padding:4px 6px;font:600 13px/1 var(--font-ui-zh);color:var(--rw-color-action-primary);cursor:pointer;border-radius:6px}
.lnk:hover{background:var(--rw-color-surface-hover)}
.eadd{display:flex;gap:8px;margin-top:6px}
.eadd .inp{flex:1;min-height:36px}
.optc{border:1px solid var(--rw-color-border);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.optc.on{border:1.5px solid var(--rw-color-action-primary);background:var(--rw-color-surface-info)}
.optc .et .inp{min-width:220px}
.bact{display:inline-flex;gap:6px;margin-left:8px;vertical-align:middle}
button.tag{border:0;cursor:pointer}
@media (max-width:599px){.erow{grid-template-columns:1fr}.eact{justify-content:flex-start}}
/* 增长信号页 */
.bfilter{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
.btiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.btile{display:flex;flex-direction:column;gap:4px;text-align:left;padding:16px 18px;border:1px solid var(--rw-color-border);border-radius:14px;background:var(--rw-color-surface);cursor:pointer;font:inherit;color:var(--rw-color-text-primary)}
.btile:hover{border-color:var(--rw-color-border-hover)}
.btile strong{font-size:16px}
.bvrow{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.bval{font:800 30px/1.1 var(--font-display);letter-spacing:-.02em}
.bchg{font:700 16px/1.2 var(--font-display);color:var(--rw-color-text-primary);white-space:nowrap}
.bmain{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:stretch}
.bchart{border:1px solid var(--rw-color-border);border-radius:14px;padding:16px 16px 12px;background:var(--rw-color-surface);display:flex;flex-direction:column;gap:8px;min-width:0}
.bsvg{width:100%;height:auto;display:block;overflow:visible}
.bsvg .gl{stroke:#eceef2;stroke-width:1}
.bsvg .ax{font:500 12px var(--font-ui-zh);fill:#6d6d6d}
.bsvg .ctxl{fill:none;stroke:#c9cbd3;stroke-width:1.5;stroke-linejoin:round}
.bsvg .sell{fill:none;stroke:#0099f2;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
/* Model-estimated days: the selected curve is dashed over a light band until measuring began. */
.bsvg .sellest{fill:none;stroke:#0099f2;stroke-width:2;stroke-dasharray:5 5;stroke-linejoin:round;stroke-linecap:round;opacity:.7}
.bsvg .estband{fill:rgba(109,109,109,.07)}
.bsvg .estt{fill:#5b5e66}
/* The industry filter hides daily cards and emptied grids; .g3 and .card set their own display. */
[data-rw-daily][hidden],[data-rw-daily] [data-testid="daily-card"][hidden],[data-rw-daily-ind][hidden],[data-rw-daily-more][hidden]{display:none}
/* Beats .sec a.sm[href] (inline-flex), which would otherwise show the link before any save. */
.sec .rw-gcard a[data-rw-saved-link][hidden]{display:none}
/* The daily board: one block per industry. */
.rw-gdaily-ind{display:flex;flex-direction:column;gap:12px;margin-top:20px}
/* Signal card: what it means for the reader, first and set apart; labels in bold for scanning. */
.rw-gmean{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-left:3px solid #0099f2;border-radius:10px;background:var(--rw-color-surface-info)}
.rw-gmean p{line-height:1.6}
.rw-greview{color:var(--rw-color-text-secondary)}
.rw-gdaily-ind [data-rw-daily-more]{align-self:flex-start;min-height:44px}
.bsvg .selend{fill:#0099f2;stroke:#fff;stroke-width:2}
.bsvg .evdot{fill:#fff;stroke:#00649e;stroke-width:2}
.bsvg .evn{font:700 12px var(--font-ui-zh);fill:#00649e}
.bsvg .xh{stroke:#8e9097;stroke-width:1;stroke-dasharray:3 3}
.bsvg .startl{stroke:#8e9097;stroke-width:1;stroke-dasharray:2 4}
.bsvg .tip{fill:#fff;stroke:#d9dae1;filter:drop-shadow(0 4px 10px rgba(51,51,51,.12))}
.bsvg .tipd{font:600 12px var(--font-ui-zh);fill:#6d6d6d}
.bsvg .tipv{font:700 13px var(--font-ui-zh);fill:#333}
.bsvg .tipe{font:500 12px var(--font-ui-zh);fill:#5e6063}
.bsvg .hit{fill:transparent;cursor:crosshair}
.lg{display:inline-block;width:16px;height:3px;border-radius:2px;vertical-align:middle;margin:0 4px 0 10px}
.lg.sel{background:#0099f2}.lg.ctx{background:#c9cbd3}
/* The ranking takes the chart's height (height 0, min-height 100%: the chart alone sets the row) and scrolls inside. */
.brank{border:1px solid var(--rw-color-border);border-radius:14px;padding:14px;background:var(--rw-color-surface);display:flex;flex-direction:column;height:0;min-height:100%;overflow:auto}
.rrow{flex-shrink:0;display:grid;grid-template-columns:20px minmax(0,1fr) 72px 48px;gap:8px;align-items:center;padding:8px 6px;border:0;border-bottom:1px solid var(--rw-color-border);background:none;text-align:left;cursor:pointer;font:inherit;color:var(--rw-color-text-primary);border-radius:8px}
.rrow:hover{background:var(--rw-color-surface-hover)}
.rrow.on{background:var(--rw-color-surface-info)}
.rrow .rk{font:700 13px var(--font-display);color:#8e9097}
.rrow .rt{display:flex;flex-direction:column;gap:1px;min-width:0}
.rrow .rt strong{font-size:13px;line-height:1.4}
.rrow .spk{width:72px;height:24px}
.rrow .spk path{fill:none;stroke:#8e9097;stroke-width:1.5}
.rrow.on .spk path{stroke:#0099f2;stroke-width:2}
.rrow .rn{display:flex;flex-direction:column;align-items:flex-end;font-size:12px}
.rrow .rn b{font:800 16px var(--font-display)}
.chg{color:var(--rw-color-text-secondary);font-weight:600}
.bdetail{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;border:1px solid var(--rw-color-border);border-left:5px solid var(--rw-blue);border-radius:14px;padding:20px;background:var(--rw-color-surface)}
.evb{display:inline-flex;width:18px;height:18px;border-radius:999px;border:2px solid #00649e;color:#00649e;font-size:12px;align-items:center;justify-content:center;margin-right:4px}
@media (max-width:1023px){.bmain{grid-template-columns:1fr}.brank{height:auto;min-height:0;max-height:none}}
@media (max-width:760px){.btiles{grid-template-columns:1fr}.bdetail{grid-template-columns:1fr}.bval{font-size:24px}}
.risegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.rise{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto auto;gap:4px 12px;padding:16px 18px;border:1px solid var(--rw-color-border);border-radius:14px;background:var(--rw-color-surface);text-decoration:none;color:var(--rw-color-text-primary)}
.rise:hover{border-color:var(--rw-color-border-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.rise strong{grid-column:1/2;font-size:16px;line-height:1.45}
.rise .spk{grid-column:1/2;width:100%;max-width:220px;height:32px}
.rise .spk path{fill:none;stroke:#0099f2;stroke-width:2}
.rise .rn{grid-column:2/3;grid-row:1/4;display:flex;flex-direction:column;align-items:flex-end;justify-content:center}
.rise .rn b{font:800 26px var(--font-display)}
@media (max-width:760px){.risegrid{grid-template-columns:1fr}}
/* 手机首页压缩 */
.m-only{display:none}
@media (max-width:599px){
.m-only{display:inline-block}.d-only{display:none!important}
.home-art{display:none!important}
.cg4.m3>a:nth-child(n+4){display:none}
.howto>div{padding:14px}
.howto p{font-size:13px}
.reasons .tile p,.reasons .tile .meta{display:none}
.v2 .sec{padding-top:32px;padding-bottom:32px}
}
@media (max-width:599px){
.mswipe{display:grid!important;grid-template-columns:none!important;grid-auto-flow:column;grid-auto-columns:84%;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px!important;padding-bottom:6px;margin-right:-16px;padding-right:16px}
.mswipe>*{scroll-snap-align:start}
.reasons{gap:10px!important}
.reasons .tile{padding:14px;gap:6px}
.reasons .tile .ibox{display:none}
.howto{gap:10px}
}
.moref summary{cursor:pointer;font:600 14px/1.4 var(--font-ui-zh);color:var(--rw-color-action-primary)}
@media (max-width:599px){
.topnav .brand span{display:none}
.srchbtn{padding:0 8px}
.bsvg .ax{font-size:22px}
.bsvg .tip,.bsvg .tipd,.bsvg .tipv,.bsvg .tipe{display:none}
.bsvg .evn{font-size:20px}
.btiles{display:grid!important;grid-template-columns:none!important;grid-auto-flow:column;grid-auto-columns:78%;overflow-x:auto;gap:10px!important;margin-right:-16px;padding-right:16px}
.brank .rrow:nth-child(n+8){display:none}
}
.hread{font:600 13px/1.4 var(--font-ui-zh);color:var(--rw-color-text-primary);min-height:18px}
/* v3.4 图标双色：浅色底 + 强调描边（Upskill Pro 笔法） */
svg.ico path.w{fill:currentColor;fill-opacity:.14;stroke:none}
svg.ico path.a{stroke:var(--ico-ac,#7354bd)}
svg.ico path.f{fill:currentColor}
/* 增长智库下拉 */
.dd[open]>div.ddw{min-width:300px;padding:8px}
.ddi{display:flex!important;gap:12px;align-items:flex-start;padding:10px 12px!important;border-radius:10px;text-decoration:none;color:var(--rw-color-text-primary)!important}
.ddi:hover{background:var(--rw-color-surface-hover)}
.ddi svg{width:22px;height:22px;color:var(--rw-color-action-primary);margin-top:1px}
.ddi span{display:flex;flex-direction:column;gap:1px}
.ddi b{font-size:14px;font-weight:700}
.ddi small{font-size:12px;color:var(--rw-color-text-secondary)}
.ccard .kick2{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.ccard .kick2 svg{width:18px;height:18px;color:var(--rw-color-action-primary)}
/* v3.4 服务页：Why 结构与五步分工 */
.svchero{background:linear-gradient(180deg,#f3f9fe 0,#fff 100%)}
/* Hero band (Jackie 2026-11-07, second round: checked against the Runwise VI). The VI allows no
   decorative gradients and sets flat grounds, so every page's first section stands out on one flat
   semantic surface, the soft brand blue (--rw-color-surface-info), closed by the standard divider.
   The heroes are found by their existing classes (.svchero about, academy, growth machine, insights,
   loop, services; .rw-hero-32 trust, privacy, terms, signal rules; .rw-ghero signals; .rw-shero
   solutions; .rw-hhero visitor home; .rw-mh-top member home; .rw-wbsec the AI workbench) and by
   .rw-hero-band on the PHP heroes (industry and problem pages). The article hero keeps its column
   colour. Text on it clears AA: body 11.4:1, secondary 5.7:1, metadata 4.7:1, action blue 4.9:1. */
:root{--rw-hero-bg:var(--rw-color-surface-info)}
.rw-hero-band,.svchero,.rw-hero-32,.rw-ghero,.rw-shero,.rw-hhero,.rw-mh-top,.rw-wbsec,
.elementor .e-div-block-base:is(.svchero,.rw-hero-32,.rw-ghero,.rw-shero,.rw-hhero,.rw-wbsec){background:var(--rw-hero-bg);border-bottom:1px solid var(--rw-color-border)}
.uvp{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.uvp>div{display:flex;gap:14px;align-items:flex-start;padding:18px;border:1px solid var(--rw-color-border);border-radius:14px;background:#fff}
.uvp strong{display:block;font-size:16px;margin-bottom:4px}
.uvp p,.usp p{margin:0;font-size:14px;line-height:1.65;color:var(--rw-color-text-secondary)}
.uvi{flex:none;width:44px;height:44px;border-radius:12px;background:var(--rw-color-surface-info);color:var(--rw-color-action-primary);display:inline-flex;align-items:center;justify-content:center}
.uvi .ico{width:26px;height:26px}
.svctabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.svct{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px;border:1px solid var(--rw-color-border);border-radius:12px;background:#fff;cursor:pointer;font:inherit;text-align:left;color:var(--rw-color-text-primary);text-decoration:none}
.svct .ico{width:26px;height:26px;color:var(--rw-color-action-primary)}
.svct strong{font-size:14px;line-height:1.35}
.svct:hover{border-color:var(--rw-color-border-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.svct.on{border:1.5px solid var(--rw-color-action-primary);background:var(--rw-color-surface-info)}
/* Brand-claim cards (Jackie 2026-11-07): the About 三件事 and the claim cards under the /services/ and
   /academy/ heroes carry one line drawing each (scripts/build_offering_art.py, assets/illustrations/
   claims/), in brand blue and ink only, faint in the lower right behind the text. Same treatment on
   all three pages. Decorative, so it is a background, not an image. */
.rw-claim{position:relative;overflow:hidden;isolation:isolate}
.rw-claim::after{content:"";position:absolute;right:-6px;bottom:-8px;width:132px;height:99px;z-index:-1;background:no-repeat center/contain;opacity:.2;pointer-events:none}
.rw-claim-think::after{background-image:url("../illustrations/claims/think.svg")}
.rw-claim-solve::after{background-image:url("../illustrations/claims/solve.svg")}
.rw-claim-change::after{background-image:url("../illustrations/claims/change.svg")}
.rw-claim-duo::after{background-image:url("../illustrations/claims/duo.svg")}
.rw-claim-outcome::after{background-image:url("../illustrations/claims/outcome.svg")}
.rw-claim-carry::after{background-image:url("../illustrations/claims/carry.svg")}
.rw-claim-own::after{background-image:url("../illustrations/claims/own.svg")}
@media (max-width:599px){.rw-claim::after{width:96px;height:72px}}
/* Background art of a growth service or growth camp (render/services.php runwise_experience_offering_art,
   Jackie 2026-11-07): the offering's whole picture fills the foot of its card, behind the text and
   fading in from above, so a reader remembers each offering by sight. The card keeps that band free of
   text (--rw-offart-h), so no line runs over the drawing. */
.rw-offcard{--rw-offart-w:100%;position:relative;overflow:hidden;isolation:isolate;padding-bottom:calc(min(var(--rw-offart-max,240px),var(--rw-offart-w)) * .625)}
.rw-offcard>.rw-offart{position:absolute;right:0;bottom:0;z-index:-1;width:var(--rw-offart-w);max-width:var(--rw-offart-max,240px);height:auto;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 30%);mask-image:linear-gradient(180deg,transparent 0,#000 30%)}
.svct.rw-offcard{--rw-offart-max:180px}
.tile.rw-offcard{--rw-offart-max:220px}
/* Offering titles lead the card (Jackie 2026-11-07: they were too small to notice): heading size from
   the type scale, darker than the meta above them; the picture band stays below and smaller. */
.tile.rw-offcard>strong{font:700 var(--rw-text-h2)/1.3 var(--font-ui-zh);letter-spacing:-.01em;margin-top:4px}
.svct.rw-offcard strong{font-size:var(--rw-text-h3);line-height:1.3}
.camptabs .svct.rw-offcard strong{font-size:20px}
.svct.rw-offcard>.meta{font-size:12px}
@media (max-width:599px){.tile.rw-offcard>strong{font-size:22px}.svct.rw-offcard strong{font-size:17px}}
@media (max-width:599px){
  .rw-offcard,.svct.rw-offcard,.tile.rw-offcard{--rw-offart-max:180px}
  /* Phone tiles (/solutions/ swipe row) keep their height cap: the picture moves to the empty top
     right, beside the icon, instead of a band at the foot. */
  .tile.rw-offcard{padding-bottom:22px}
  .tile.rw-offcard>.rw-offart{top:0;bottom:auto;width:120px;-webkit-mask-image:linear-gradient(270deg,#000 45%,transparent);mask-image:linear-gradient(270deg,#000 45%,transparent)}
}
.why{display:flex;flex-direction:column;gap:14px;padding:24px;border:1px solid var(--rw-color-border);border-radius:16px;background:#fff}
.whyh{display:flex;gap:14px;align-items:flex-start}
.whyh .eb{margin:0 0 4px;color:var(--rw-color-action-primary)}
.whyh h3{margin:0;line-height:1.5}
.whyi{flex:none;width:48px;height:48px;border-radius:14px;background:var(--rw-color-action-primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;--ico-ac:#bfe8ff}
.whyi .ico{width:28px;height:28px}
.whyth{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.whycost{display:flex;gap:8px;align-items:flex-start;margin:0;padding:12px 14px;border-radius:10px;background:var(--rw-color-surface-warning);font-size:14px;line-height:1.6}
.whycost .ico{color:var(--rw-color-warning)}
.lanehd,.lanerow{display:grid;grid-template-columns:200px repeat(3,minmax(0,1fr)) 120px;gap:14px;align-items:start}
.lanehd{padding:0 14px;font:700 13px/1.4 var(--font-ui-zh);color:var(--rw-color-text-secondary)}
.lanehd span{display:flex;gap:6px;align-items:center}
.lanerow{padding:14px;border:1px solid var(--rw-color-border);border-left:5px solid var(--sl);border-radius:12px}
.lanerow.focus{background:var(--sb)}
.lanerow p{margin:0;font-size:14px;line-height:1.6}
.lanerow .lab{display:none}
.lanerow .ln{display:flex;gap:10px;align-items:flex-start}
.lanerow .ln b{display:block;font-size:16px}
.lanerow .ln span{font-size:13px;color:var(--sc);font-weight:600}
.lanerow .tool{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--rw-color-surface-info);color:var(--rw-color-info);font:700 12px/1.6 var(--font-ui-zh);white-space:nowrap}
.fx{display:inline-block;margin-top:4px;font-style:normal;font:700 12px/1.6 var(--font-ui-zh);color:#fff;background:var(--sc);padding:0 8px;border-radius:999px}
.trust1{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:12px;background:var(--rw-color-surface-subtle)}
.trust1>.ico{width:28px;height:28px;color:var(--rw-color-action-primary);flex:none}
.trust1 b{display:block;margin-bottom:2px}
.trust1 p{margin:0;font-size:14px;line-height:1.6}
.usp{display:flex;flex-direction:column;gap:8px;padding:18px;border-radius:14px;background:var(--rw-color-surface-subtle)}
.usp b{font-size:16px}
@media (max-width:1023px){.svctabs{grid-template-columns:repeat(3,minmax(0,1fr))}.lanehd{display:none}.lanerow{grid-template-columns:1fr 1fr}.lanerow .ln{grid-column:1/-1}.lanerow .lab{display:flex;gap:4px;align-items:center;font-size:12px;font-weight:700;color:var(--rw-color-text-metadata);margin-bottom:2px}}
@media (max-width:760px){.uvp,.whyth{grid-template-columns:1fr}.svctabs{grid-template-columns:repeat(2,minmax(0,1fr))}.lanerow{grid-template-columns:1fr}.why{padding:18px}}
.why4{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.why4>div{display:flex;gap:14px;align-items:flex-start;padding:18px;border:1px solid var(--rw-color-border);border-radius:14px;background:#fff}
.why4 .eb{margin:0 0 2px;color:var(--rw-color-action-primary)}
.why4 b{display:block;font-size:16px;margin-bottom:4px}
.why4 p{margin:0;font-size:14px;line-height:1.6;color:var(--rw-color-text-secondary)}
.camptabs{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:760px){.why4{grid-template-columns:1fr}.camptabs{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* AI 工作台：新建 / 我的决定 / 今天要复盘 */
.wbtabs{background:#fff;border-bottom:1px solid var(--rw-color-border)}
.wbtabs .wrap{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding-top:8px;padding-bottom:8px}
.wbt-title{font:800 15px/1 var(--font-ui-zh);margin-right:10px}
.wbtabs a{display:inline-flex;gap:6px;align-items:center;min-height:var(--rw-touch-target);padding:0 14px;border-radius:999px;font:600 14px/1 var(--font-ui-zh);color:var(--rw-color-text-primary);text-decoration:none}
.wbtabs a:hover{background:var(--rw-color-surface-hover);text-decoration:none;color:var(--rw-color-text-primary)}
.wbtabs a.on{background:var(--rw-color-surface-info);color:var(--rw-color-action-primary)}
.wbtabs .ico{width:18px;height:18px}
.cnt{display:inline-flex;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--rw-color-surface-subtle);font:700 12px/20px var(--font-ui-zh);justify-content:center}
.cnt.red{background:var(--rw-red);color:#fff}
@media (max-width:599px){.wbt-title{display:none}.wbtabs a{padding:0 10px;font-size:13px}}
/* 我的决定：卡片与进度 */
.dcard{display:flex;flex-direction:column;gap:12px;padding:18px;border:1px solid var(--rw-color-border);border-radius:14px;background:#fff}
.dtop{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.dtop>div{display:flex;flex-direction:column;gap:2px}
.dtop strong{font-size:17px}
.dfoot{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.dcard .loopbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.pg{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:var(--rw-color-surface-subtle);border-top:4px solid #d9dae1;opacity:.6}
.pg span{font:700 12px/1 var(--font-display);color:var(--rw-color-text-metadata)}
.pg b{font-size:13px;line-height:1.35}
.pg.done{opacity:1;border-top-color:var(--sl);background:#fff}
.pg.cur{opacity:1;border-top-color:var(--sl);background:var(--sb);box-shadow:inset 0 0 0 1.5px var(--sl)}
@media (max-width:599px){.dcard .loopbar{grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}.pg{padding:6px 4px}.pg b{font-size:12px}}
.howto>div>div{position:relative;flex:1;min-width:0}
.hti{float:right;margin:-2px 0 4px 8px;color:var(--rw-color-action-primary)}
.hti .ico{width:30px;height:30px}
.icgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.icc{display:flex;flex-direction:column;gap:6px;align-items:center;padding:14px 8px;border:1px solid var(--rw-color-border);border-radius:12px;background:#fff;color:var(--rw-color-action-primary)}
.icc .ico{width:32px;height:32px}
.icc b{font-size:13px;color:var(--rw-color-text-primary)}
.icc code{font-size:12px;color:var(--rw-color-text-metadata)}
/* 方法页 */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.stats>div{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border-radius:14px;background:#fff;border:1px solid var(--rw-color-border)}
.stats b{font:800 26px/1.1 var(--font-display);letter-spacing:-.02em}
.stats span{font-size:13px;color:var(--rw-color-text-secondary)}
.hil{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:14px;background:var(--rw-color-surface-subtle)}
.hil .hn{flex:none;width:30px;height:30px;border-radius:999px;background:var(--rw-violet);color:#fff;display:flex;align-items:center;justify-content:center;font:800 14px var(--font-display)}
.hil b{display:block;margin-bottom:2px}
.hil p{margin:0;font-size:14px;line-height:1.6;color:var(--rw-color-text-secondary)}
.comp{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end;padding:16px;border-radius:14px;background:var(--rw-color-surface-subtle)}
.cr{display:flex;flex-direction:column;gap:8px}
.stack{display:flex;flex-direction:column-reverse;gap:4px}
.blk{display:block;padding:6px 8px;border-radius:8px;font:600 12px/1.3 var(--font-ui-zh);color:#fff}
.blk.b1{background:#00649e}.blk.b2{background:#5a3fa3}.blk.b3{background:#5e6063}.blk.b4{background:#237a32}.blk.b5{background:#b5145f}
.steprow .lab{display:flex;gap:4px;align-items:center}
.steprow .lab .ico{width:16px;height:16px}
@media (max-width:760px){.stats{grid-template-columns:1fr 1fr 1fr}.stats b{font-size:20px}.comp{gap:6px;padding:10px}}
.steprow.srw4{grid-template-columns:220px minmax(0,1fr) minmax(0,1fr) minmax(0,.7fr)}@media (max-width:760px){.steprow.srw4{grid-template-columns:1fr}}

/* v3.5 设计评审修订：字号下限 12px、圆角三级、对比度、点击区域、焦点环 */
:root{--r-s:10px;--r-m:14px;--r-l:18px}
.why,.svct,.uvp>div,.why4>div,.usp,.trust1,.hil,.comp,.dcard,.hcard,.ccard,.card,.paper,.tile,.btile,.rise,.bchart,.brank,.bdetail,.stats>div{border-radius:var(--r-m)}
.svchero .uvp>div,.why{border-radius:var(--r-l)}
.rrow .rk{color:#5e6063}
.topnav .brand{min-height:44px;display:inline-flex;align-items:center}
.sec a.go,.sec a.m-only,.sec a.sm[href],.wrap>a[style*="font-weight: 700"],.wrap>div>a[style*="font-weight: 700"],.promise a{display:inline-flex;align-items:center;min-height:44px}
:focus-visible{outline:3px solid var(--rw-violet);outline-offset:2px;border-radius:6px}
.tag,.meta,.src,.coltag,.indtag{font-size:12px}
.d3{line-height:1.5}
details.more{border-top:1px dashed var(--rw-color-border);padding-top:10px}
details.more>summary{cursor:pointer;font:600 14px/1.4 var(--font-ui-zh);color:var(--rw-color-action-primary);min-height:32px;display:flex;align-items:center}
details.more[open]>summary{margin-bottom:10px}
@media (max-width:599px){
.stats{gap:8px}.stats>div{padding:10px}.stats b{font-size:17px;white-space:nowrap}.stats span{font-size:12px}
.usp{display:grid;grid-template-columns:40px 1fr;gap:4px 12px;padding:14px}.usp .uvi{width:40px;height:40px;grid-row:1/3}.usp b{align-self:center}.usp p{grid-column:2}
.dlwrap+.pill-sw{display:none}
}
/* ===== v3.7：封面、精选轮播、首屏插画、导航图标、Upskill Pro 登录 ===== */
.tni{width:18px!important;height:18px!important;margin-right:6px;color:var(--rw-color-action-primary)}
.tn .tni,.dd>summary .tni{flex:none}
@media (max-width:1180px){.tni{display:none}}
.upbtn{display:inline-flex;align-items:center;gap:6px;min-height:var(--rw-touch-target);min-width:var(--rw-touch-target);padding:0 12px;border-radius:999px;background:#1b1b3a;color:#fff!important;text-decoration:none!important;font:700 13px/1 var(--font-ui-zh);white-space:nowrap}
.upbtn:hover{background:#2c2c55}
.upbtn svg{width:18px;height:18px;color:#8fd3ff}
.upbtn .upx{width:14px;height:14px;color:#c9c9d6}
.upbtn svg.ico path.a{stroke:#ffffff}
@media (max-width:1280px){.hdr-r .upbtn span{display:none}.hdr-r .upbtn{padding:0 10px}}
.mni a{gap:10px}.mni a svg{width:20px;height:20px;color:var(--rw-color-action-primary);flex:none}
.mni a.upm{font-weight:700;color:#1b1b3a}
.wbt-title{display:inline-flex;align-items:center;gap:6px}.wbt-title svg{width:18px;height:18px;color:var(--rw-color-action-primary)}
.uplink{display:inline-flex;align-items:center;gap:8px}
.btn-up{background:#1b1b3a!important;color:#fff!important;border-color:#1b1b3a!important;gap:8px}
.btn-up:hover{background:#2c2c55!important}
.btn-up.btn-up-sec{background:var(--rw-color-surface)!important;color:#1b1b3a!important;border-color:#1b1b3a!important}
.btn-up.btn-up-sec:hover{background:var(--rw-color-surface-hover)!important}
.btn-up svg{width:18px;height:18px;color:#8fd3ff}.btn-up svg.ico path.a{stroke:#fff}
/* 文章封面 */
.cv{position:relative;overflow:hidden;border-radius:12px;aspect-ratio:2/1;flex:none}
.cv svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.cv .cvi path{fill:none;stroke:var(--cva);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.cv .cvi path.w{fill:var(--cvb);fill-opacity:.16;stroke:none}
.cv .cvi path.a{stroke:var(--cvb)}
.cv .cvi path.f{fill:var(--cva);stroke:none}
.cv .cvl{position:absolute;left:10px;bottom:10px;font:700 12px/1 var(--font-ui-zh);color:var(--cva);background:rgba(255,255,255,.92);padding:6px 9px;border-radius:999px}
.ccard>.cv{margin:-20px -20px 4px;border-radius:13px 13px 0 0}
.ccard{border-top-width:0;padding-top:20px;overflow:hidden}
.ccard>.cv::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--sl)}
.ccard .new{z-index:2}
@media (max-width:599px){
.ccard{display:grid;grid-template-columns:96px minmax(0,1fr);column-gap:12px;row-gap:6px;align-content:start;padding:14px}
.ccard>.cv{grid-row:1/span 4;margin:0;border-radius:10px;width:96px;aspect-ratio:1/1;align-self:start}
.ccard>.cv .cvl{display:none}
.ccard>.cv svg{width:192px;left:-48px}
.ccard>*:not(.cv):not(.new){grid-column:2}
.ccard .t{font-size:15px}
}
/* 首屏插画 */
.hart{width:100%;height:auto;display:block;max-width:560px;margin:0 auto}
.herog{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:40px;align-items:center}
@media (max-width:1023px){.herog{grid-template-columns:1fr;gap:20px}.herog .hart{max-width:420px}}
@media (max-width:599px){.herog .hart{max-width:340px}}
/* Two columns that share one top and one bottom edge (Jackie 2026-11-07: About, the 增长智库 hero, the
   problem page hero). .rw-split is equal halves, .rw-split-wide gives the left column more room (7:5);
   both stretch their columns to the taller one. Inside a column, .rw-split-fill stacks its children and
   lets them share the column's height, so the last card ends on the shared bottom edge. Below 900px the
   columns stack and every child keeps its natural height. Elementor containers need the higher
   specificity rules, since their base class sets its own display. */
.rw-split,.elementor .e-div-block-base.rw-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:stretch}
.rw-split.rw-split-wide,.elementor .e-div-block-base.rw-split.rw-split-wide{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.rw-split>*{min-width:0}
.rw-split-fill,.elementor .e-div-block-base.rw-split-fill{display:flex;flex-direction:column;gap:16px;min-width:0}
.rw-split-fill>*{flex:1 1 0;min-height:0}
.rw-split-fill>*>.card,.rw-split-fill>.card{height:100%;box-sizing:border-box}
@media (max-width:899px){
  .rw-split,.elementor .e-div-block-base.rw-split,.rw-split.rw-split-wide,.elementor .e-div-block-base.rw-split.rw-split-wide{grid-template-columns:minmax(0,1fr);gap:24px}
  .rw-split-fill>*{flex:none}
  .rw-split-fill>*>.card,.rw-split-fill>.card{height:auto}
}
/* 精选轮播 */
.feat{position:relative;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:var(--r-l);padding:14px;display:flex;flex-direction:column;gap:12px;box-shadow:0 16px 40px rgba(27,27,58,.08)}
.feat .cv{aspect-ratio:16/7}
.feat .fhd{display:flex;justify-content:space-between;align-items:center;gap:8px}
.feat .fhd .eb{display:inline-flex;align-items:center;gap:6px;margin:0}.feat .fhd .eb svg{width:18px;height:18px;color:var(--rw-color-editorial,#f01a78)}
.feat .fbody{display:flex;flex-direction:column;gap:6px;min-height:148px;text-decoration:none;color:var(--rw-color-text-primary)}
.feat .fbody:hover{color:var(--rw-color-text-primary);text-decoration:none}
.feat .fbody .t{font:700 20px/1.45 var(--font-ui-zh);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.feat .fbody .p{font-size:14px;line-height:1.65;color:var(--rw-color-text-secondary);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.feat .fbody .go{font-weight:700;color:var(--rw-color-action-primary);margin-top:auto}
.feat .fctl{display:flex;align-items:center;justify-content:space-between;gap:8px}
.feat .dots{display:flex;gap:4px}
.feat .dots button{width:44px;height:44px;border:0;background:none;padding:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.feat .dots button span{width:10px;height:10px;border-radius:999px;background:#d0d0d6;display:block;transition:width .2s}
.feat .dots button.on span{width:26px;background:var(--rw-color-action-primary)}
.feat .arr{display:flex;gap:6px}
.feat .arr button{width:44px;height:44px;border-radius:999px;border:1px solid var(--rw-color-border);background:var(--rw-color-surface);font-size:18px;cursor:pointer}
.feat .arr button:hover{background:var(--rw-color-surface-hover)}
/* 首屏精选卡（信号、方案） */
.hfeat{background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:var(--r-l);padding:20px;display:flex;flex-direction:column;gap:10px;box-shadow:0 16px 40px rgba(27,27,58,.08);text-decoration:none;color:var(--rw-color-text-primary)}
a.hfeat:hover{text-decoration:none;color:var(--rw-color-text-primary);box-shadow:0 18px 44px rgba(27,27,58,.12)}
.hfeat .eb{display:inline-flex;align-items:center;gap:6px;margin:0}.hfeat .eb svg{width:18px;height:18px;color:var(--rw-color-action-primary)}
.hfeat .hft{font:700 20px/1.45 var(--font-ui-zh);margin:0}
.hfeat .hfv{display:flex;align-items:baseline;gap:10px}.hfeat .hfv b{font:800 40px/1 var(--font-display)}.hfeat .hfv .chg{color:#1b7a2d;font-weight:700}
.hfeat svg.hfs{width:100%;height:120px;display:block}
.hfeat svg.hfs .ar{fill:#0099f2;fill-opacity:.12}.hfeat svg.hfs .ln{fill:none;stroke:#0099f2;stroke-width:3;stroke-linejoin:round}
.hfeat .go{font-weight:700;color:var(--rw-color-action-primary)}
/* Featured card driven by a daily growth signal (render/solutions.php): tag, then the signal as evidence. */
.rw-hfsig{display:flex;flex-direction:column;gap:6px}
.rw-hfsig .tag{display:inline-flex;align-items:center;gap:4px}.rw-hfsig .tag svg{width:14px;height:14px}
.rw-hfsig .hc-ev{font-size:13px;color:var(--rw-color-text-primary);border-left-color:var(--rw-blue)}
/* 定位条 */
.posit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:760px){.posit{grid-template-columns:1fr}}
.posit>div{display:flex;gap:14px;align-items:flex-start;padding:18px 20px;border-radius:var(--r-l);border:1px solid var(--rw-color-border);background:var(--rw-color-surface)}
.posit>div.dark{background:#1b1b3a;border-color:#1b1b3a;color:#fff}
.posit>div.dark p{color:#c9c9d6}.posit>div.dark .ico{color:#8fd3ff}.posit>div.dark svg.ico path.a{stroke:#fff}
.posit .ico{width:36px;height:36px;flex:none;color:var(--rw-color-action-primary)}
.posit b{font:700 16px/1.5 var(--font-ui-zh)}.posit p{margin:4px 0 8px;font-size:14px;line-height:1.6;color:var(--rw-color-text-secondary)}
.posit a.lk{font-weight:700;font-size:14px}.posit>div.dark a.lk{color:#8fd3ff}
.ibadge{display:inline-flex;align-items:center;gap:6px}.ibadge svg{width:18px;height:18px}
/* 训练营 */
.campg{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:1023px){.campg{grid-template-columns:repeat(2,minmax(0,1fr))}}
.faq{display:flex;flex-direction:column;gap:8px}
.faq details{border:1px solid var(--rw-color-border);border-radius:var(--r-m);padding:0 16px;background:var(--rw-color-surface)}
.faq summary{min-height:52px;display:flex;align-items:center;font-weight:700;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";margin-left:auto;font-size:20px;color:var(--rw-color-text-secondary)}
.faq details[open] summary::after{content:"–"}
.faq details p{margin:0 0 14px;font-size:14px;line-height:1.7;color:var(--rw-color-text-secondary)}
.teamb{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:760px){.teamb{grid-template-columns:1fr}}
.arthero{margin:0 0 4px}.arthero .cv{aspect-ratio:3/1}
.prepbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.prepbar .pstep{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:10px;font:700 12px/1 var(--font-ui-zh);color:var(--sc);background:var(--sw,#f3f3f6)}
.prepbar .pstep svg{width:22px;height:22px;color:var(--sc)}
.s1{--sw:#e6f3fd}.s2{--sw:#efeafa}.s3{--sw:#fdefe4}.s4{--sw:#e7f6ea}.s5{--sw:#fde7f0}
@media (min-width:761px){.topnav .tn,.topnav .dd>summary{padding:0 9px}.hdr-r .srchbtn span{display:none}.hdr-r .srchbtn{padding:0 10px}}
@media (max-width:1280px){.hdr-r .upbtn span{display:inline}}
@media (max-width:1100px){.hdr-r .upbtn span,.hdr-r .upbtn .upx{display:none}}
@media (min-width:761px){.topnav .wrap{flex-wrap:nowrap}.topnav .dnav{flex:0 1 auto!important;flex-wrap:nowrap!important;min-width:0}.topnav .tn,.topnav .dd>summary{white-space:nowrap}}
@media (max-width:599px){.posit>div{padding:14px 16px;gap:12px}.posit .ico{width:30px;height:30px}.ccard .new{top:18px;left:18px;right:auto}}
.prepbar .pstep{color:#333}

/* === Site shell: brand bar (rebuilt as a five-colour spectrum strip) === */
.rw-brandbar{display:flex;height:4px}
.rw-brandbar span{flex:1 1 0}
.rw-brandbar span:nth-child(1){background:var(--rw-step-1)}
.rw-brandbar span:nth-child(2){background:var(--rw-step-2)}
.rw-brandbar span:nth-child(3){background:var(--rw-step-3)}
.rw-brandbar span:nth-child(4){background:var(--rw-step-4)}
.rw-brandbar span:nth-child(5){background:var(--rw-step-5)}
/* === End site shell === */

/* ---- Click targets: every header and footer control is at least 44px (accessibility baseline) ---- */
.topnav .hdr-r .upbtn,.topnav .hdr-r .srchbtn,.topnav .hdr-r .btn{min-height:var(--rw-touch-target)}
.topnav .hdr-r .srchbtn{min-width:var(--rw-touch-target)}
footer .meta a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
.rw-logo{display:block;width:132px;height:auto}

/* ---- Round 2 review fixes (plan 2026-11-03-0001) ---- */
/* M3 Elementor's `.elementor a{box-shadow:none}` hid the current-page underline on plain nav links. */
.topnav a.tn.tn-on{box-shadow:inset 0 -3px 0 var(--rw-color-action-primary)}
/* M1 the mobile tab bar is pinned to the viewport wherever it is rendered; the page clears it. */
@media (max-width:760px){
.tabbar{position:fixed;left:0;right:0;bottom:0;padding-bottom:env(safe-area-inset-bottom)}
body{padding-bottom:calc(56px + env(safe-area-inset-bottom))}
}
/* M2 the menu label stays on one line; the logo keeps its VI minimum width, so the gaps give way. */
.mnav>summary{white-space:nowrap}
@media (max-width:599px){.topnav .wrap,.topnav .hdr-r{gap:6px}.topnav .hdr-r .btn{padding:0 12px}.mnav>summary{padding:0 8px}}
/* M8 the open mobile menu dims the page behind it and marks the current section. */
/* The scrim hangs on the summary, so a tap on the dimmed page closes the menu; the tab bar sits under it. */
.mnav[open]>summary::before{content:"";position:fixed;inset:0;background:rgba(16,24,40,.32);z-index:19;cursor:default}
body:has(.mnav[open]) .tabbar{z-index:18}
.mnav[open]>div a.on{color:var(--rw-color-action-primary);font-weight:700}
footer .meta{align-items:center}
/* H5 card meta lines break between words, never inside 分钟阅读. */
.ccard .m{word-break:keep-all}
/* W6 the workbench title tab is hidden on phones (a later rule made it inline-flex again). */
@media (max-width:599px){.wbtabs .wbt-title{display:none}}
/* A quiet text button for secondary, reversible-by-confirmation actions (W3 per-decision delete). */
.rw-textbtn{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);padding:0 8px;border:0;background:none;font:500 14px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.rw-textbtn:hover{color:var(--rw-color-text-primary)}
/* The three legal links wrap as one group, so on phones they share a single 44px row. */
/* M4 the due dot obeys [hidden] (its display rule would otherwise beat the browser default). */
.dot-red[hidden]{display:none}
/* The tab bar's 我的决定 carries the same due dot, at the corner of its icon. */
.tabbar a{position:relative}
.tabbar .dot-red{position:absolute;top:8px;left:calc(50% + 8px);margin:0}
/*
 * Page shell by sign-in state (runwise-experience member-shell island). Public pages are the same HTML
 * for every reader: visitor-only parts carry data-rw-guest, member-only parts data-rw-member and start
 * hidden. While a hinted state read runs (html.rw-pending) the visitor parts keep their size but are not
 * drawn, and buttons marked data-rw-pending-guard cannot be pressed.
 */
[data-rw-guest][hidden],[data-rw-member][hidden]{display:none!important}
html.rw-pending [data-rw-guest]{visibility:hidden}
html.rw-pending [data-rw-pending-guard]{pointer-events:none}
/* N2 the About dropdown, last in the bar, opens towards the left so it stays inside narrow windows. */
.dnav>.dd:last-of-type[open]>div{left:auto;right:0}
/* Pause control for decorative motion (render/motion.php, Jackie 2026-11-04: a light, small icon instead
   of the 「暂停动画」 text button). The button itself is the 44px hit area and stays transparent; a 30px
   white disc with a light border and a grey outline glyph sits inside it. The glyph (#6d6d6d) passes 3:1
   on white; hover and keyboard focus darken it, and focus adds the ring. aria-pressed picks the glyph. */
.rw-pause{display:inline-flex;align-items:center;justify-content:center;width:var(--rw-touch-target);height:var(--rw-touch-target);padding:0;border:0;border-radius:50%;background:transparent;color:var(--rw-color-text-metadata);cursor:pointer;flex:none}
.rw-pause[hidden]{display:none}
.rw-pause-disc{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--rw-color-border);border-radius:50%;background:var(--rw-color-surface);transition:border-color .2s,color .2s}
.rw-pause svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.rw-pause .rw-play-i,.rw-pause[aria-pressed="true"] .rw-pause-i{display:none}
.rw-pause[aria-pressed="true"] .rw-play-i{display:block}
.rw-pause:hover,.rw-pause:focus-visible{color:var(--rw-color-text-primary)}
.rw-pause:hover .rw-pause-disc,.rw-pause:focus-visible .rw-pause-disc{border-color:var(--rw-color-border-hover)}
.rw-pause:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:-3px}
/* Growth machine illustration (render/growth-machine.php): seven parts on a belt around the five-step engine.
   Step colours mark the engine only; parts stay neutral. A chosen step is highlighted (motion continues); motion
   stops with the pause button and is removed by prefers-reduced-motion (tokens.css). */
.gm{position:relative;margin:0;min-width:0}
.gm>svg{display:block;width:100%;height:auto;overflow:visible}
.gm .gm-m{display:none}
@media (max-width:699px){.gm .gm-d{display:none}.gm .gm-m{display:block;max-width:420px;margin:0 auto}}
.gm text{font-family:var(--font-ui-zh);fill:var(--rw-color-text-primary)}
.gm-belt{fill:none;stroke:var(--rw-line-blue);stroke-width:12}
.gm-flow{fill:none;stroke:var(--rw-color-action-primary);stroke-width:2.5;stroke-dasharray:6 12;animation:gm-flow 2.4s linear infinite}
.gm-flow-v{stroke-width:3}
.gm-spoke{stroke:var(--rw-color-border);stroke-width:1.5}
.gm-seg path{fill:none;stroke-width:24}
.gm-sl{font-size:14px;font-weight:700;text-anchor:middle}
.gm-se{font-size:12px;text-anchor:middle;fill:var(--rw-color-text-secondary)!important;font-family:var(--font-display)!important}
.gm-gear{fill:none;stroke:var(--rw-color-border-strong);stroke-width:5;stroke-dasharray:3 9;transform-box:fill-box;transform-origin:center;animation:gm-turn 30s linear infinite}
.gm-core{fill:var(--rw-color-surface-info)}
.gm-c1{font-size:15px;font-weight:800;text-anchor:middle}
.gm-c2{font-size:12px;text-anchor:middle;fill:var(--rw-color-text-secondary)!important}
.gm-part rect{fill:var(--rw-color-surface);stroke:var(--rw-color-border-strong);stroke-width:1.5;animation:gm-light 10.5s ease-in-out infinite;animation-delay:calc(var(--gm-i) * 1.5s)}
.gm-part .ico{color:var(--rw-color-action-primary);--ico-ac:var(--rw-color-action-primary)}
.gm-pn{font-size:15px;font-weight:700}
.gm-pl{font-size:12px;fill:var(--rw-color-text-secondary)!important}
.gm.a1 .gm-seg:not(.gm-s1),.gm.a2 .gm-seg:not(.gm-s2),.gm.a3 .gm-seg:not(.gm-s3),.gm.a4 .gm-seg:not(.gm-s4),.gm.a5 .gm-seg:not(.gm-s5){opacity:.25}
.gm[data-paused] *{animation-play-state:paused!important}
.gm-pause{position:absolute;right:-6px;bottom:-6px}
@media (max-width:699px){.gm-pause{position:static;display:flex;margin:4px -6px 0 auto}}
@media (prefers-reduced-motion:reduce){.gm-pause{display:none}}
.gm-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:600;color:var(--rw-color-link)}
@keyframes gm-flow{to{stroke-dashoffset:-72}}
@keyframes gm-turn{to{transform:rotate(360deg)}}
@keyframes gm-light{0%,12%,100%{stroke:var(--rw-color-border-strong);stroke-width:1.5}5%{stroke:var(--rw-color-action-primary);stroke-width:3}}
/* Compact machine (home hero): phones show the one-line link only. */
.gm-compact .gm-link{display:none}
.gm-compact .gm-pause{position:static;display:flex;margin:4px -6px 0 auto}
@media (max-width:699px){.gm-compact .gm-d,.gm-compact .gm-pause{display:none}.gm-compact .gm-link{display:inline-flex}}
@media (prefers-reduced-motion:reduce){.gm-compact .gm-pause{display:none}}
.gm-compact{width:100%;max-width:600px}
/* /solutions/ hero: this season's problems on the parts (growth-machine-problems.php) */
.gm-dw{position:relative}
.gm-dw>svg{display:block;width:100%;height:auto;overflow:visible}
.gm-flag{position:absolute;display:flex;flex-direction:column;padding:0 12px;border-radius:12px;background:var(--rw-color-surface-info);box-shadow:0 0 0 1px var(--rw-line-blue)}
.gm-flag[hidden]{display:none}
.gm-flag.gm-up{transform:translateY(-100%)}
.gm-flag a{display:flex;align-items:center;gap:8px;min-height:44px;min-width:0;font:600 13px/1.35 var(--font-ui-zh);color:var(--rw-color-link);text-decoration:none}
.gm-flag a.gm-new{animation:gm-in .45s ease-out}
.gm-flag a::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:currentColor}
.gm-flag a+a{border-top:1px solid var(--rw-line-blue)}
.gm-flag a span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.gm-flag a:hover span,.gm-flag a:focus-visible span{text-decoration:underline}
@media (max-width:1199px){.gm-flag a+a{display:none}}
.gm-flag.gm-mflag{padding:0;background:none;box-shadow:none}
.gm-mflag a{height:100%;align-items:flex-end;padding:0 12px 7px 44px}
.gm-mflag a::before{display:none}
/* B8: a problem title wraps to two lines (the part is drawn taller for it) instead of being cut. */
.gm-mflag a span{display:-webkit-box;width:100%;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;background:var(--rw-color-surface);line-height:18px}
@keyframes gm-in{from{opacity:0;transform:translateY(4px)}}
.gm-inds{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.gm-inds .pill-sw button.indtag{min-height:44px;gap:6px;padding:0 14px;border:1px solid transparent;font:600 14px/1 var(--font-ui-zh);cursor:pointer}
.gm-inds .pill-sw button.indtag.on{background:var(--rw-color-surface-selected);border-color:var(--rw-color-border-selected)}
@media (prefers-reduced-motion:reduce){.gm-flag a{animation:none}}
@media (max-width:699px){.gm-inds{gap:8px}.gm-inds>.meta{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.gm-inds .pill-sw{flex-wrap:nowrap;max-width:100%;overflow-x:auto;scrollbar-width:none}.gm-inds .pill-sw button.indtag{flex:none;padding:0 12px}}

/* Upskill Pro official mark (assets/brand). PHP prints an <img>; Elementor text blocks use an empty
   span with the same image as background. On dark backgrounds the mark sits on a white tile. */
.upmark{display:inline-block;flex:none;width:20px;height:20px;border-radius:5px;vertical-align:middle}
span.upmark{background:url(../brand/upskill-pro-mark-48.png) center/contain no-repeat}
span.upmark.upmark-lg{width:24px;height:24px}
:is(.btn-up,.upbtn,.dark,.foot) .upmark{background-color:#fff;background-origin:content-box;padding:2px;box-sizing:content-box}

/* Footer (D28): action band, one row of six links, legal line. Prefix rwf- keeps clear of .fx. */
.rwf>.wrap{padding-top:36px;padding-bottom:16px}
.rwf-top{display:flex;justify-content:space-between;align-items:center;gap:16px 24px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.15)}
.rwf-brand{display:flex;align-items:center;gap:16px;min-width:0}
.rwf-tag{display:flex;flex-direction:column;gap:2px;margin:0;padding-left:16px;border-left:1px solid rgba(255,255,255,.3);font-size:14px;line-height:1.5;color:#e9eaee}
/* The hotline keeps a 44px tap area without pushing the two lines apart. */
.rwf-tag a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);margin:-11px 0;color:inherit;text-decoration:none}
.rwf-act{display:flex;flex-wrap:wrap;gap:12px}
.rwf-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--rw-touch-target);padding:0 18px;border:1px solid rgba(255,255,255,.55);border-radius:999px;font:700 14px/1 var(--font-ui-zh);text-decoration:none}
.foot a.rwf-btn.rwf-up{background:#fff;border-color:#fff;color:#1b1b3a}
.foot a.rwf-btn.rwf-up:hover{background:#e9f4fd}
.rwf-nav{display:flex;flex-wrap:wrap;gap:0 24px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.15)}
.rwf-nav a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);font-size:14px}
.rwf-legal{display:flex;flex-wrap:wrap;align-items:center;gap:0 18px;padding-top:4px}
/* D12: the legal line's links and the Cookie button share one style (underlined, 44px tall). */
.rwf-legal a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);text-decoration:underline}
.rwf-cookie{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);padding:0;border:0;background:none;color:#e9eaee;font:inherit;text-decoration:underline;cursor:pointer}
@media (max-width:599px){.rwf>.wrap{padding-top:24px;padding-bottom:8px}.rwf-act{width:100%;flex-direction:column}.rwf-btn{width:100%}.rwf-nav{display:grid;grid-template-columns:1fr 1fr}}
/* Logo as tall as the action buttons beside it. */
.rwf .rw-logo{width:auto;height:var(--rw-touch-target);flex:none}
/* Cookie settings: first-visit banner and the panel "Cookie 设置" reopens (consent island) */
.rw-consent{position:fixed;left:16px;right:16px;bottom:16px;z-index:40;display:flex;justify-content:center;pointer-events:none}
.rw-consent[hidden]{display:none}
.rw-consent-in{pointer-events:auto;width:100%;max-width:720px;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:var(--rw-radius-lg);box-shadow:var(--rw-shadow-overlay);padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.rw-consent-title{margin:0;font:700 16px/1.4 var(--font-ui-zh)}
.rw-consent-text{margin:0;font-size:14px;line-height:1.7}
.rw-consent-state{margin:0;color:var(--rw-color-text-secondary)}
.rw-consent-acts{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.rw-consent-acts .btn{min-height:44px;padding:0 16px;font-size:14px}
.rw-consent-acts .btn[aria-pressed="true"]{border-color:var(--rw-color-border-selected)}
@media (max-width:599px){.rw-consent{left:8px;right:8px;bottom:8px}.rw-consent-acts{justify-content:stretch}.rw-consent-acts .btn{flex:1 1 auto}}

/* A18 (batch 5): headings break evenly instead of leaving one character on the last line, and the
   workbench question box shows its whole example on phones. */
h1,h2{text-wrap:balance}
@media (max-width:599px){.rw-wb .composer textarea{min-height:92px}}
/* Logo wall (render/logo-wall.php): partner and client marks as one calm band. Every mark is drawn in
   one neutral tone (grayscale, multiplied onto the white surface so the files' white boxes vanish,
   at --rw-logo-opacity); a hovered mark, or the whole band while it has keyboard focus, shows its own
   colours. The track holds the list twice and slides by half its width, so the loop has no seam; the
   spacing lives inside each item, never as a gap between the two lists. The files carry wide white
   margins, so each mark carries its own size and trim as inline custom properties (render/logo-wall.php:
   --lw/--lh the drawn file size, --lt/--lr/--lb/--ll the negative margins, in units of --rw-logo-z);
   width and height scale together, so no mark is stretched. The item class is rw-logos-item, never the
   brand logo's rw-logo (that rule fixes a 132px width). Hover, focus or the small pause icon at the
   band's right end stop it; prefers-reduced-motion turns it into a static wrapped grid without the copy. */
.rw-logos{--rw-logo-z:1px;--rw-logo-opacity:.72;position:relative;display:flex;align-items:center;min-width:0}
.rw-logos-band{position:relative;flex:1 1 auto;min-width:0;overflow:hidden;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:var(--rw-radius-lg);-webkit-mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent)}
.rw-logos-track{display:flex;width:max-content;animation:rw-logos var(--rw-logos-dur,40s) linear infinite}
.rw-logos-list{display:flex;flex:0 0 auto;align-items:center;margin:0;padding:0;list-style:none}
.rw-logos-item{flex:0 0 auto;display:flex;align-items:center;padding:14px 22px}
.rw-logos-item img{display:block;flex:none;max-width:none;width:calc(var(--lw) * var(--rw-logo-z));height:calc(var(--lh) * var(--rw-logo-z));margin:calc(var(--lt) * var(--rw-logo-z)) calc(var(--lr) * var(--rw-logo-z)) calc(var(--lb) * var(--rw-logo-z)) calc(var(--ll) * var(--rw-logo-z));filter:grayscale(1) contrast(1.15);opacity:var(--rw-logo-opacity);mix-blend-mode:multiply;transition:filter .2s,opacity .2s}
.rw-logos-band:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:3px}
.rw-logos-band:focus-visible .rw-logos-item img{filter:none;opacity:1}
.rw-logos[data-paused] .rw-logos-track,.rw-logos-band:focus-within .rw-logos-track{animation-play-state:paused}
@media (hover:hover){.rw-logos:hover .rw-logos-track{animation-play-state:paused}.rw-logos-item img:hover{filter:none;opacity:1}}
.rw-logos-pause{position:absolute;top:50%;right:0;transform:translateY(-50%)}
@keyframes rw-logos{to{transform:translateX(-50%)}}
@media (max-width:599px){.rw-logos{--rw-logo-z:.82px}.rw-logos-item{padding:10px 14px}.rw-logos-compact .rw-logos{--rw-logo-z:.64px}.rw-logos-compact .rw-logos-item{padding:4px 10px}}
@media (prefers-reduced-motion:reduce){
  .rw-logos-band{-webkit-mask-image:none;mask-image:none}
  .rw-logos-track{width:auto;animation:none;transform:none}
  .rw-logos-list{flex:1 1 auto;flex-wrap:wrap;justify-content:center}
  .rw-logos [data-rw-logos-copy],.rw-logos .rw-logos-pause{display:none}
}
/* Compact walls on phones stay one static row under reduced motion (scrolled by hand or keyboard, not
   wrapped), so the home and /solutions/ phone height caps hold either way. */
@media (prefers-reduced-motion:reduce) and (max-width:599px){
  .rw-logos-compact .rw-logos-band{overflow-x:auto}
  .rw-logos-compact .rw-logos-list{flex-wrap:nowrap;justify-content:flex-start}
}

/* Motion layer (plugin assets/js/islands/motion.js, Jackie 2026-11-04): one-time count-up of key
   figures, one-time reveal of section heads and card groups below the first screen, and a gentle lift
   on cards and buttons that lead somewhere. Hiding needs the rw-motion class, which only the island
   adds; under prefers-reduced-motion the island adds nothing and every transform here is cancelled. */
[data-rw-count]{font-variant-numeric:tabular-nums;white-space:nowrap}
.rn [data-rw-count]{--rw-count-align:right}
.rw-counting{position:relative;-webkit-text-fill-color:transparent}
.rw-counting::after{content:attr(data-rw-now);content:attr(data-rw-now) / "";position:absolute;inset:0;-webkit-text-fill-color:currentColor;text-align:var(--rw-count-align,left);white-space:nowrap;pointer-events:none}
.rw-motion [data-rw-reveal]{transition:opacity .4s ease-out,transform .4s cubic-bezier(.2,.7,.3,1);transition-delay:var(--rw-reveal-delay,0ms)}
.rw-motion [data-rw-reveal="wait"]{opacity:0;transform:translateY(12px)}
a.tile,a.ccard,a.rise,a.vcard,.btile{transition:box-shadow .15s,transform .15s,border-color .15s}
.btn{transition:background-color .15s,border-color .15s,transform .1s}
@media (hover:hover){
  a.tile:hover,a.ccard:hover,a.rise:hover,a.vcard:hover,.btile:hover{transform:translateY(-2px);box-shadow:var(--rw-shadow-card)}
}
a.tile:focus-visible,a.ccard:focus-visible,a.rise:focus-visible,a.vcard:focus-visible,a.hcard:focus-visible,.btile:focus-visible{transform:translateY(-2px);box-shadow:var(--rw-shadow-card)}
.btn:active{transform:translateY(1px)}
@media (prefers-reduced-motion:reduce){
  .rw-motion [data-rw-reveal]{opacity:1;transform:none}
  a.tile:hover,a.ccard:hover,a.rise:hover,a.vcard:hover,.hcard:hover,.btile:hover,
  a.tile:focus-visible,a.ccard:focus-visible,a.rise:focus-visible,a.vcard:focus-visible,a.hcard:focus-visible,.btile:focus-visible,
  .btn:active{transform:none}
}
/*
 * Engagement bar, follow button and their dialogs (runwise-experience engagement/bar.php). The bar keeps
 * the old site's order and shape: four soft tiles, icon over a word or the like count. Pressed buttons
 * use the action colour; the follow button is an outlined pill that fills when following.
 */
.rw-vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.rw-eng-sec{padding:8px 0 40px}
.rw-eng-wrap{display:flex;flex-direction:column;gap:20px;max-width:640px}
.rw-eng-bar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.rw-eng{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:88px;min-width:var(--rw-touch-target);padding:12px 8px;border:1px solid transparent;border-radius:var(--rw-radius-lg);background:var(--rw-color-surface-subtle);color:var(--rw-color-text-secondary);font:400 15px/1.3 var(--font-ui-zh);text-decoration:none;cursor:pointer}
.rw-eng:hover{background:var(--rw-color-surface-hover);color:var(--rw-color-text-primary);text-decoration:none}
a.rw-eng span{text-decoration:underline}
.rw-eng[aria-pressed="true"]{color:var(--rw-color-action-primary);border-color:var(--rw-line-blue);background:var(--rw-color-surface-selected)}
.rw-eng[aria-pressed="true"] .rw-eng-ico{fill:currentColor}
.rw-eng[aria-busy="true"]{cursor:progress}
.rw-eng-ico{width:28px;height:28px;flex:none}
.rw-follow{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:var(--rw-touch-target);min-width:88px;padding:0 18px;border:2px solid var(--rw-color-editorial);border-radius:var(--rw-radius-pill);background:var(--rw-color-surface);color:var(--rw-color-editorial);font:700 16px/1 var(--font-ui-zh);cursor:pointer}
.rw-follow:hover{background:var(--rw-color-surface-editorial)}
.rw-follow .rw-eng-ico{width:18px;height:18px}
.rw-follow[aria-pressed="true"]{border-color:var(--rw-color-border-interactive);color:var(--rw-color-text-secondary)}
.rw-follow[aria-pressed="true"] .rw-eng-ico{display:none}
.rw-dlg{width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;padding:24px;border:0;border-radius:var(--rw-radius-xl);box-shadow:var(--rw-shadow-overlay);color:var(--rw-color-text-primary)}
.rw-dlg::backdrop{background:var(--rw-color-overlay-scrim)}
.rw-dlg h2{margin:0 0 8px;font:700 20px/1.4 var(--font-ui-zh)}
.rw-dlg p{margin:0 0 12px}
.rw-dlg-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.rw-dlg-act .btn{flex:1 1 140px;min-height:var(--rw-touch-target)}
.rw-dlg>.btn{min-height:var(--rw-touch-target)}
.rw-poster{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:8px}
.rw-dlg [hidden]{display:none!important}
.rw-poster img{width:100%;max-width:300px;height:auto;border:1px solid var(--rw-color-border);border-radius:var(--rw-radius-sm)}
@media (max-width:599px){.rw-eng{min-height:76px;font-size:14px}.rw-eng-bar{gap:6px}}
/* Article engagement in three places (R7, R9, R10). End of the article: the bar above, then the
   column follow button. Title area: save and share as compact pills beside the column follow button.
   Mid-article: a rail beside the text on wide screens (fixed in the page's left margin from 1200px;
   from 761px the article column keeps a left gutter for it), and a bar at the bottom on phones that
   takes the site tab bar's place while the reader is in the body (:root[data-rw-reading]). */
.rw-eng-follow{display:flex;align-items:center;gap:12px}
.rw-eng-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px}
.rw-eng-top .rw-eng-bar{display:flex;gap:8px}
.rw-eng-top .rw-eng{flex-direction:row;gap:6px;min-height:var(--rw-touch-target);padding:0 14px;border-color:var(--rw-color-border);border-radius:var(--rw-radius-pill);background:var(--rw-color-surface);color:var(--rw-color-text-primary)}
.rw-eng-top .rw-eng-ico,.rw-eng-rail .rw-eng-ico,.rw-eng-mbar .rw-eng-ico{width:20px;height:20px}
.rw-eng-top .rw-follow{min-height:var(--rw-touch-target)}
.rw-eng-rail,.rw-eng-mbar{display:none}
.rw-eng-rail[hidden],.rw-eng-mbar[hidden]{display:none!important}
@media (min-width:761px){
/* The rail sits in the left margin, 16px clear of the article text (Jackie 2026-11-07: it used to start
   where the text starts, and from 1200px to 1279px ran into it). The text column is 1024px wide and
   centred, so its left edge is 50% - 512px; the rail (48px) goes 64px left of that. Below 1168px that
   margin is too narrow, so the text moves in by 64px and the rail takes the room it leaves. */
.rw-eng-rail{display:block;position:fixed;top:160px;left:calc(50% - 512px - 64px);z-index:30}
.rw-eng-rail .rw-eng-bar{display:flex;flex-direction:column;gap:6px}
.rw-eng-rail .rw-eng{min-height:var(--rw-touch-target);width:48px;min-width:48px;padding:6px 0;gap:2px;font-size:12px;background:var(--rw-color-surface);border-color:var(--rw-color-border)}
}
@media (min-width:761px) and (max-width:1167px){body:has(.rw-eng-rail) .rw-article .art{padding-left:64px}.rw-eng-rail{left:48px}}
@media (max-width:760px){
.rw-eng-mbar{display:block;position:fixed;left:0;right:0;bottom:0;z-index:41;padding-bottom:env(safe-area-inset-bottom);background:var(--rw-color-surface);border-top:1px solid var(--rw-color-border)}
.rw-eng-mbar .rw-eng-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.rw-eng-mbar .rw-eng{min-height:56px;padding:4px 0;gap:2px;border-radius:0;background:transparent;font-size:12px}
:root[data-rw-reading] .tabbar{display:none}
}
@media (prefers-reduced-motion:no-preference){.rw-eng-mbar,.rw-eng-rail{animation:rw-eng-in .18s ease-out}}
/* Slide only: a fade would leave the labels under AA contrast while it runs. */
@keyframes rw-eng-in{from{transform:translateY(8px)}to{transform:none}}
@media print{.rw-eng-rail,.rw-eng-mbar,.rw-eng-top{display:none!important}}

/* Sticky site header (Jackie 2026-11-08): the menu stays in reach while the page scrolls. The header
   lives in the Elementor header location (or straight in <body> on the theme fallback), so that box is
   the one that sticks. Anchors and sticky rails below it leave room for its height. */
:root{--rw-hdr-h:72px}
@media (max-width:760px){:root{--rw-hdr-h:62px}}
.elementor-location-header,body>header.topnav{position:sticky;top:0;z-index:35}
body.admin-bar .elementor-location-header,body.admin-bar>header.topnav{top:32px}
@media (max-width:782px){body.admin-bar .elementor-location-header,body.admin-bar>header.topnav{top:46px}}
@media (max-width:600px){body.admin-bar .elementor-location-header,body.admin-bar>header.topnav{top:0}}
/* On the workbench pages the tab row is part of the sticky box. */
:root:has(.elementor-location-header .wbtabs){--rw-hdr-h:134px}
@media (max-width:760px){:root:has(.elementor-location-header .wbtabs){--rw-hdr-h:127px}}
/* A sticky box cannot be scrolled past the screen, so whatever opens from the header scrolls inside itself. */
:root{--rw-hdr-room:calc(100dvh - var(--rw-hdr-h))}
@media (max-width:760px){:root{--rw-hdr-room:calc(100dvh - var(--rw-hdr-h) - 64px - env(safe-area-inset-bottom))}}
.topnav .srch,.mnav[open]>div,.rw-acct-menu{max-height:var(--rw-hdr-room);overflow-y:auto;overscroll-behavior:contain}
html{scroll-padding-top:calc(var(--rw-hdr-h) + 16px)}
.sticky{top:calc(var(--rw-hdr-h) + 16px)}

/* source: page-comments.css */
/* Article comments (runwise-experience includes/comments/render.php, islands/comments.js). */
.rw-cmt-sec{padding:8px 0 48px}
.rw-cmt{max-width:720px;display:flex;flex-direction:column;gap:16px}
.rw-cmt-title{display:flex;align-items:baseline;gap:8px;margin:0;font:700 22px/1.35 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.rw-cmt-count{font:500 16px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary)}
.rw-cmt-note,.rw-cmt-empty,.rw-cmt-closed{margin:0;font-size:14px;line-height:1.6;color:var(--rw-color-text-secondary)}
.rw-cmt-guest{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.rw-cmt-guest p{margin:0;flex:1 1 240px;font-size:15px;color:var(--rw-color-text-secondary)}
.rw-cmt-f{display:flex;flex-direction:column;gap:8px;margin:4px 0 0}
.rw-cmt-input{min-height:112px;resize:vertical}
.rw-cmt-input:focus-visible{outline:2px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-cmt-len{margin:0;align-self:flex-end;font-size:12px;color:var(--rw-color-text-metadata)}
.rw-cmt-to{display:flex;align-items:center;gap:12px;margin:0;font-size:14px;color:var(--rw-color-text-secondary)}
.rw-cmt-link{min-height:var(--rw-touch-target);padding:0 4px;border:0;background:none;color:var(--rw-color-link);font:500 14px/1 var(--font-ui-zh);text-decoration:underline;cursor:pointer}
.rw-cmt-gate{padding:12px 14px;border:1px solid var(--rw-line-orange);border-radius:var(--rw-radius-md);background:var(--rw-color-surface-warning)}
.rw-cmt-gate p{margin:0 0 8px;font-size:14px;color:var(--rw-color-text-primary)}
.rw-cmt-act{display:flex;flex-wrap:wrap;gap:8px}
.rw-cmt-act .btn{min-height:var(--rw-touch-target)}
.rw-cmt-status{margin:0;min-height:1.6em;font-size:14px;color:var(--rw-color-text-secondary)}
.rw-cmt-status:empty{min-height:0}
.rw-cmt-f>.btn{align-self:flex-start}
.rw-cmt-f>.btn:disabled{background:var(--rw-color-surface-disabled);border-color:var(--rw-color-border-disabled);color:var(--rw-color-text-secondary);cursor:not-allowed}
.rw-cmt-list,.rw-cmt-replies{list-style:none;margin:0;padding:0}
.rw-cmt-list{display:flex;flex-direction:column;gap:20px}
.rw-cmt-replies{margin:12px 0 0 20px;padding-left:16px;border-left:2px solid var(--rw-color-border);display:flex;flex-direction:column;gap:14px}
.rw-cmt-replies:empty{display:none}
.rw-cmt-item[hidden]{display:none}
.rw-cmt-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;color:var(--rw-color-text-secondary)}
.rw-cmt-meta img,.rw-cmt-ini{width:32px;height:32px;border-radius:50%;flex:none}
.rw-cmt-ini{display:inline-flex;align-items:center;justify-content:center;background:var(--rw-color-text-metadata);color:var(--rw-color-text-inverse);font-weight:700}
.rw-cmt-name{font-weight:600;color:var(--rw-color-text-primary)}
.rw-cmt-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:var(--rw-radius-pill);background:var(--rw-color-surface-info);color:var(--rw-color-info);font-size:12px;font-weight:700}
.rw-cmt-held{background:var(--rw-color-surface-warning);color:var(--rw-color-warning)}
.rw-cmt-meta time{font-size:13px;color:var(--rw-color-text-metadata)}
.rw-cmt-text{margin:6px 0 0 40px;font-size:15px;line-height:1.75;color:var(--rw-color-text-primary);overflow-wrap:anywhere}
.rw-cmt-text p{margin:0 0 8px}
.rw-cmt-tools{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-left:32px}
.rw-cmt-reply,.rw-cmt-tool{min-height:var(--rw-touch-target);min-width:var(--rw-touch-target);padding:0 8px;border:0;background:none;color:var(--rw-color-link);font:500 14px/1 var(--font-ui-zh);cursor:pointer}
.rw-cmt-tool{color:var(--rw-color-text-secondary)}
.rw-cmt-reply:hover,.rw-cmt-tool:hover{text-decoration:underline}
.rw-cmt-tool[aria-disabled=true]{cursor:default;text-decoration:none}
.rw-cmt-tool[hidden]{display:none}
.rw-report-set{margin:0 0 4px;padding:0;border:0}
.rw-report-set legend{margin:0 0 4px;padding:0;font-size:14px;color:var(--rw-color-text-secondary)}
.rw-report-opt{display:flex;align-items:center;gap:10px;min-height:var(--rw-touch-target);font-size:15px;cursor:pointer}
.rw-report-opt input{width:20px;height:20px;margin:0;accent-color:var(--rw-color-link)}
.rw-cmt-item>.rw-cmt-f{margin:8px 0 0 40px}
.rw-cmt-more{align-self:flex-start;min-height:var(--rw-touch-target)}
@media (max-width:599px){.rw-cmt-text{margin-left:0}.rw-cmt-tools{margin-left:-8px}.rw-cmt-replies{margin-left:4px;padding-left:12px}.rw-cmt-item>.rw-cmt-f{margin-left:0}}

/* The reply line only while replying (R21): .rw-cmt-to sets display, so [hidden] needs its own rule. */
.rw-cmt-to[hidden]{display:none}
/* Discussion area (R17): 提问 / 评论 / 报错 tabs inside the article column. */
.rw-disc .rw-disc-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 16px}
.rw-disc .rw-disc-tabs [role="tab"]{display:inline-flex;align-items:center;gap:6px;min-height:var(--rw-touch-target);padding:0 16px}
.rw-disc .rw-disc-tabs .rw-cmt-count{margin-left:0}
.rw-disc-panel[hidden],.rw-disc [hidden]{display:none!important}
.rw-disc-panel{display:flex;flex-direction:column;gap:12px}
.rw-disc-guest{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.rw-disc .rw-cmt-f select.inp{min-height:var(--rw-touch-target)}

/* source: page-decisions.css */
/* My decisions page and the member home: layout helpers that replace the prototype's inline styles. */

/* Decisions page section (Elementor Atomic blocks bring their own display, padding and min-width). */
.elementor .e-div-block-base.rw-dcsec,.elementor .rw-dcsec .e-div-block-base.e-con{min-width:0;padding:0}
.elementor .e-div-block-base.rw-dcsec.sec{padding:36px 0 56px}
.elementor .rw-dcsec .e-div-block-base.wrap{padding:0 48px;display:flex}
@media (max-width:599px){.elementor .rw-dcsec .e-div-block-base.wrap{padding:0 16px}}
.rw-dcsec .elementor-widget:not(:last-child){margin-block-end:0}
.rw-dc-lead{color:var(--rw-color-text-secondary)}
.rw-dc{display:flex;flex-direction:column;gap:16px;min-width:0}
.rw-dc-guest{display:flex;flex-direction:column;gap:12px;max-width:640px}
.rw-dc-band{align-items:start;margin-top:16px}
.rw-dc-review{display:flex;flex-direction:column;gap:12px;border-top:5px solid var(--sl)}
.rw-dc-empty{min-height:220px;display:flex;flex-direction:column;justify-content:center;gap:6px}
.rw-dc-row{display:grid;grid-template-columns:1fr auto;gap:8px;border-bottom:1px solid var(--rw-color-border);padding:6px 0}
.rw-dc-verdict{font-weight:700}
.rw-dc-acts,.rw-mh-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.rw-dc .dcard .rule-risk{margin-top:4px}

/* Member home: the container holding the member branch adds nothing of its own. */
.elementor .e-div-block-base.rw-mh{display:block;min-width:0;padding:0}
.rw-mh .elementor-widget:not(:last-child){margin-block-end:0}
.rw-mh-sec.rw-mh-top{padding:36px 0 28px}
.rw-mh-sec.sec-tint{padding-top:36px}
.rw-mh-loop{background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-left:5px solid var(--sl);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:8px;min-width:0}
.rw-mh-looptop{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.rw-mh-looptitle{font-size:17px}
.rw-mh-loopsub{color:var(--rw-color-text-secondary)}

/* Hidden states win over the layout helpers (rw-col8 and friends set display). */
.rw-dc [hidden],.rw-mh [hidden]{display:none!important}
/* Tap targets of at least 44px for the small buttons used here. */
.rw-dc .sugg,.rw-dc .btn,.rw-mh .sugg,.rw-mh .btn{min-height:44px}
/* Steps not reached yet stay readable (the prototype dimmed them below AA contrast). */
.rw-dc .pg{opacity:1}
.rw-dc .pg:not(.done):not(.cur) span,.rw-dc .pg:not(.done):not(.cur) b{color:var(--rw-color-text-metadata)}
/* The recommended grid keeps rows of four on wide screens, as on the visitor home. */
@media (min-width:1024px){.rw-mh .cg4{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* The English step name in the badge keeps AA contrast on the light step background. */
.rw-mh-loop .sbadge em{opacity:1}
/* W2 steps not yet reached lose their step colour; the text keeps AA contrast (no opacity). */
.rw-dc .loopbar>.pg:not(.done):not(.cur){border-top-color:#d9dae1}
@media (max-width:760px){.rw-dc .loopbar>.pg:not(.done):not(.cur){border-left-color:#d9dae1}}

/* Export preview, and the one-page sheet that only shows when printed (下载 PDF prints it to PDF). */
.rw-dc .rw-dc-export{margin:0;white-space:pre-wrap;font:14px/1.8 var(--font-ui-zh);background:var(--rw-color-surface-subtle);padding:14px;border-radius:8px;overflow-wrap:anywhere}
.rw-print{display:none}
.rw-print-head{font-size:22px;line-height:1.4;margin:0 0 12px}
.rw-print-row{display:grid;grid-template-columns:7em 1fr;gap:8px;padding:8px 0;border-bottom:1px solid #999}
.rw-print-qr{display:flex;gap:16px;align-items:center;margin-top:16px}
.rw-print-qr img{width:40mm;height:40mm}
.rw-print p{margin:8px 0;overflow-wrap:anywhere}
@media print{
html.rw-print-one body *{visibility:hidden}
html.rw-print-one .rw-print,html.rw-print-one .rw-print *{visibility:visible}
html.rw-print-one .rw-print{display:block;position:absolute;left:0;top:0;width:100%;color:#000;background:#fff;font:12pt/1.6 var(--font-ui-zh)}
}

/* source: page-home.css */
/* Home page: layout helpers that replace the prototype's inline styles, plus the parts the home
   widgets need (composer row, tab panels, join form). Elementor elements carry only these class names. */

/* Elementor's atomic blocks get a default padding and display; home sections reset them here so the
   prototype classes (sec, wrap, g2, ...) decide the layout. */
.elementor .rw-hsec .e-div-block-base.e-con{min-width:0;padding:0}
.elementor .e-div-block-base.rw-hsec{padding:64px 0}
.elementor .rw-hsec .e-div-block-base.wrap{padding:0 48px}
.elementor .rw-hsec .e-div-block-base:is(.g2,.g3){display:grid}
.elementor .rw-hsec .e-div-block-base:is(.rw-col6,.rw-col12,.rw-col16,.rw-col18,.rw-hcol20,.rw-hsechead,.rw-hart){display:flex}
.rw-hcol20{flex-direction:column;gap:20px;min-width:0}

/* Section padding, as in the prototype */
.elementor .e-div-block-base.rw-hsec.rw-hhero{padding:48px 0 40px}
.elementor .e-div-block-base.rw-hsec.rw-hpad48{padding:48px 0}
.elementor .e-div-block-base.rw-hsec.rw-hrise{padding:44px 0 8px}
.elementor .e-div-block-base.rw-hsec.rw-hpt24{padding-top:24px}
@media (max-width:599px){
  .elementor .e-div-block-base.rw-hsec{padding:32px 0}
  .elementor .e-div-block-base.rw-hsec.rw-hhero{padding:48px 0 40px}
  .elementor .e-div-block-base.rw-hsec.rw-hpad48{padding:48px 0}
  .elementor .e-div-block-base.rw-hsec.rw-hrise{padding:44px 0 8px}
  .elementor .e-div-block-base.rw-hsec.rw-hpt24{padding:24px 0 32px}
  .elementor .rw-hsec .e-div-block-base.wrap{padding:0 16px}
}

/* Elementor wrappers inside home sections add no spacing of their own */
.rw-hsec .elementor-widget:not(:last-child){margin-block-end:0}
.rw-hsec .elementor-widget-text-editor p:last-child{margin-bottom:0}

/* Section heading row: kicker and title on the left, a link on the right */
.rw-hsechead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px}
.elementor .rw-hsec .rw-hsechead>.e-con,.rw-hsechead>.elementor-widget{width:auto;max-width:100%}
.rw-hkick .kick{margin:0}
.rw-hlink,.rw-strong{font-weight:700;display:inline-flex;align-items:center;min-height:44px}
.rw-m0{margin:0}

/* Hero art column */
.rw-hart{min-width:0;display:flex;flex-direction:column;align-items:center;gap:8px}
.rw-hart>*{width:100%}
.rw-hart .rw-widget{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.rw-hart .rw-widget>a.sm{min-height:44px;display:inline-flex;align-items:center}
.rw-loop-art{display:block;width:100%;height:auto}

/* Composer */
.rw-composer-label{display:flex;align-items:center;gap:6px;color:#5a3fa3}
.rw-composer-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.rw-composer-go{min-height:44px;gap:8px}
.composer .sugg{min-height:44px}
.rw-qrow{grid-template-columns:1fr auto}
.rw-widget>.gen{margin-top:18px}

/* Tab panels: hidden cards stay hidden whatever the grid layout says */
.hfull>[hidden],.hlite>[hidden],.gen[hidden],.hsub[hidden],[data-join-status][hidden]{display:none!important}
.rw-tabs{align-self:flex-start}
.rw-hsec .rw-widget{display:flex;flex-direction:column;gap:18px;min-width:0}
.rw-hsec .rw-widget>.rw-tabs{align-self:flex-start}

/* Join form */
.rw-join{display:flex;flex-direction:column;gap:14px}
.rw-fieldset{border:0;margin:0;padding:0;min-width:0}
.rw-legend{margin:0 0 6px;padding:0;font-weight:600}
.rw-chip-radio{cursor:pointer;gap:6px}
.rw-chip-radio input{position:absolute;opacity:0;width:1px;height:1px}
.rw-chip-radio:focus-within{outline:2px solid var(--rw-color-focus-ring);outline-offset:2px}

/* Phones: tab rows scroll sideways like the card rows, and the join form stays compact, so the page
   keeps within the mobile height budget while every control stays 44px tall */
@media (max-width:599px){
  .rw-hsec .seg.rw-tabs{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none}
  .rw-hsec .seg.rw-tabs button{flex:none}
  .rw-join.paper{padding:20px 16px}
  .rw-join .chk{padding:6px 10px;font-size:13px;align-items:center}
  .rw-join .chk input{margin-top:0}
}

/* Positioning cards: the card links get a 44px target without making the cards taller */
.rw-hsec .posit a.lk{display:inline-flex;align-items:center;min-height:44px;margin:-6px 0 -12px}

/* Desktop 3×4: three rows of four, so the "no column twice in a row" rule holds for the rows people see */
@media (min-width:1024px){.rw-hsec .cg4{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* H4 the home hero frames the bilingual loop without its caption (viewBox 8 -14 744 556 of 744 614). */
@media (min-width:600px){.rw-loop-nocap picture{display:block;aspect-ratio:744/556;overflow:hidden}}
/* 2026-11: phones show the growth machine as one link under the composer (the drawing stays on wide
   screens); the hero's bottom padding gives back the height, keeping the mobile home under 5,100px. */
@media (max-width:599px){
  .home-art.rw-hart{display:flex!important}
  .home-art .rw-widget>:not(.gm){display:none!important}
  .elementor .e-div-block-base.rw-hsec.rw-hhero{padding:32px 0 16px}
}
/* Logo walls under "关于 Runwise": a small kick heading, one line, then the band. Phones keep only the
   client band in one compact row (no subtitle), so the home page stays within its height cap. */
.elementor .rw-hsec .e-div-block-base.rw-hlogos{display:flex;flex-direction:column;gap:8px;padding:0}
.elementor .rw-hsec .e-div-block-base.rw-hlogos .rw-mt8{margin-top:16px}
@media (max-width:599px){.elementor .rw-hsec .e-div-block-base.rw-hlogos .rw-mt8{margin-top:4px}}

/* source: page-insights.css */
/* Insights library, article page and site search: layout helpers that replace the prototype's
   inline styles, plus the states the islands switch with the hidden attribute. */

/* Hidden items stay hidden even where a component sets its own display. */
.feat [hidden],.ins-browser [hidden],.rw-article [hidden],.rw-ahero [hidden],.srch [hidden]{display:none!important}

/* Hero band */
.elementor .e-div-block-base.sec.ins-hero{padding-top:44px;padding-bottom:32px;border-bottom:1px solid var(--rw-color-border)}
.elementor .e-div-block-base.ins-col16{display:flex;flex-direction:column;gap:16px;min-width:0}
.elementor .e-div-block-base.ins-min0{min-width:0;padding:0}
.elementor .e-div-block-base.sec.ins-list{padding-top:28px}

/* Hero, two columns (Jackie 2026-11-07, second round): the heading and 按问题找 share the left 35%,
   编辑精选 takes the right 65%; both columns share one top and one bottom edge (.rw-split in
   components.css). In the left column the 按问题找 panel grows to the column's foot, the domain chips
   at its bottom; on the right the carousel fills its column. */
.rw-split.ins-split35,.elementor .e-div-block-base.rw-split.ins-split35{grid-template-columns:minmax(0,35fr) minmax(0,65fr);gap:32px}
.elementor .e-div-block-base.ins-hcol{gap:12px;padding:0}
.ins-hcol h1.d1{font-size:clamp(28px,2.4vw,36px);line-height:1.25}
.ins-hcol .big{font-size:15px;line-height:1.7;margin:0}
.ins-hcol>.elementor-widget{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.ins-hcol>.elementor-widget>.elementor-widget-container,.ins-hcol .rw-widget{flex:1 1 auto;display:flex;flex-direction:column}
.ins-split .ins-ask{flex:1 1 auto;box-sizing:border-box;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:var(--r-l);padding:14px 20px 20px}
.ins-split .ins-ask .ins-domains{margin-top:auto;padding-top:8px}
.ins-ask-h{margin:0;min-height:var(--rw-touch-target);display:flex;align-items:center}
.ins-split>.ins-min0,.ins-split>.ins-min0>.elementor-widget,.ins-split>.ins-min0 .elementor-widget-container,.ins-split>.ins-min0 .rw-widget{height:100%}
.ins-split .feat{height:100%;box-sizing:border-box}
/* The whole slide is one link. In the taller right column the slide's cover grows to fill the card
   (the cover drawing scales with "slice", so it never distorts), keeping title and dots at the foot. */
.ins-split .feat .fslides{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.ins-split .feat .fbody:not([hidden]){flex:1 1 auto}
.ins-split .feat .fbody .cv{flex:1 1 auto;aspect-ratio:auto;min-height:200px}
@media (max-width:899px){
  .ins-split>.ins-min0,.ins-split>.ins-min0>.elementor-widget,.ins-split>.ins-min0 .elementor-widget-container,.ins-split>.ins-min0 .rw-widget,.ins-split .feat{height:auto}
  .ins-split .feat .fbody .cv{flex:none;aspect-ratio:2/1;min-height:0}
  .rw-split.ins-split35,.elementor .e-div-block-base.rw-split.ins-split35{grid-template-columns:minmax(0,1fr);gap:20px}
}
/* Phones keep the entry unframed, so the first article card stays within the first-screen budget. */
@media (max-width:599px){
  .ins-split{margin-top:0}
  .ins-split .ins-ask{border:0;border-radius:0;padding:0;background:none}
  .ins-ask-h{display:none}
}

/* Carousel controls */
.feat .fctl{flex-wrap:wrap}
.feat .fpause{min-height:var(--rw-touch-target)}

/* Filter bar (Jackie 2026-11-07): search, one dropdown per facet and the cornerstone switch on one row
   (wrapping on narrow screens); active filters below as removable chips with the count. Shared by
   /insights/ and its hubs; the same look serves the industry problem list and the signals board. */
.rw-fbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;border:1px solid var(--rw-color-border);border-radius:var(--r-l);background:var(--rw-color-surface);margin:0}
.rw-fbar-q{flex:1 1 220px;display:flex;align-items:center;gap:8px;min-width:0;min-height:var(--rw-touch-target);padding:0 12px;border-radius:10px;background:var(--rw-color-surface-subtle)}
.rw-fbar-q .ico{width:18px;height:18px;flex:none;color:var(--rw-color-text-secondary)}
.rw-fbar-q input{flex:1 1 auto;min-width:0;border:0;background:none;font:inherit;font-size:15px;color:var(--rw-color-text-primary);outline:none;min-height:var(--rw-touch-target)}
.rw-fbar-q:focus-within{outline:3px solid var(--rw-color-focus-ring);outline-offset:1px}
.rw-fbar-sel{flex:0 1 auto;min-width:0}
.rw-fbar-sel select{min-height:var(--rw-touch-target);max-width:100%;padding:0 30px 0 12px;border:1px solid var(--rw-color-border-interactive);border-radius:10px;background:var(--rw-color-surface);font:inherit;font-size:14px;color:var(--rw-color-text-primary);cursor:pointer}
.rw-fbar-sel.on select{border-color:var(--rw-color-action-primary);background:var(--rw-color-surface-info);font-weight:700}
.rw-fbar-chk{display:inline-flex;align-items:center;gap:6px;min-height:var(--rw-touch-target);padding:0 12px;border:1px solid var(--rw-color-border-interactive);border-radius:10px;font-size:14px;cursor:pointer;white-space:nowrap}
.rw-fbar-chk.on{border-color:var(--rw-color-action-primary);background:var(--rw-color-surface-info);font-weight:700}
.rw-fbar-chk input{width:18px;height:18px;margin:0;accent-color:var(--rw-color-action-primary)}
.rw-fbar-go{min-height:var(--rw-touch-target);padding:0 18px}
.rw-fchips{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.rw-fchip{display:inline-flex;align-items:center;gap:6px;min-height:var(--rw-touch-target);padding:0 10px 0 12px;text-decoration:none;background:var(--rw-color-surface-info);border-color:var(--rw-line-blue);font-size:13px}
.rw-fchip span{font-size:16px;line-height:1;color:var(--rw-color-text-secondary)}
.rw-fclear{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);font-size:13px}
@media (max-width:599px){.rw-fbar-q{flex-basis:100%}.rw-fbar-sel{flex:1 1 calc(50% - 4px)}.rw-fbar-sel select{width:100%}.rw-fbar-go{flex:1 1 100%}}

/* Library browser */
/* Column, topic and industry hubs open with their own heading instead of the /insights/ hero (C9). */
.ins-hubhead{display:flex;flex-direction:column;gap:10px;padding-top:16px}
.ins-browser{display:flex;flex-direction:column;gap:16px}
.ins-colbar,.ins-filters,.ins-more{display:flex;flex-direction:column;gap:10px}
.ins-more{margin-top:10px}
.ins-fl{align-self:center;min-width:40px}
.ins-browser .chk{align-self:flex-start}
.ins-browser .colpills .chip{min-height:var(--rw-touch-target)}
.ins-m0{margin:0}
.ins-stopped{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.ccard>.tag[data-testid="sample-label"]{align-self:flex-start}

/* Question entry on the first screen: one line, an optional industry, the six domains. */
.ins-ask{display:flex;flex-direction:column;gap:12px;min-width:0}
.ins-ask form{display:flex;flex-direction:column;gap:10px;margin:0}
.ins-ask input.inp,.ins-ask select.inp{min-height:var(--rw-touch-target);resize:none}
.ins-ask-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ins-ask-row .btn{flex:none}
.ins-ask-row select.inp{width:auto;flex:1 1 120px;min-width:0}
/* Question tools island: the results below the entry, and the cited answer sentences */
.ins-ask-results{display:flex;flex-direction:column;gap:8px}
.ins-ask-answers{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}
.ins-domains{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ins-domains .chip{padding:0 12px;font-size:13px;text-decoration:none}
.ins-domains .ins-dom-off{border-style:dashed;cursor:default;color:var(--rw-color-text-secondary)}
.ins-domains .ins-dom-off:hover{background:var(--rw-color-surface)}

/* Library filters and page links are links */
.ins-browser a.chip{text-decoration:none}
.ins-pager{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ins-pager .chip{min-width:var(--rw-touch-target);justify-content:center}
.ins-gap{min-width:16px;text-align:center;color:var(--rw-color-text-secondary)}

/* Shorter carousel on phones: title and link only */
@media (max-width:599px){
.elementor .e-div-block-base.sec.ins-hero{padding-top:24px;padding-bottom:20px}
.ins-hero .feat .cv{display:none}
.ins-hero .feat .fbody{min-height:0}
.ins-hero .feat .fbody .p{display:none}
.ins-hero .feat .fctl .meta{display:none}
}

/* Search: loading placeholder rows */
.srload{display:flex;flex-direction:column;gap:8px}
.srload p{margin:0}
.srph{display:block;height:14px;border-radius:6px;background:var(--rw-color-border)}
.srph:nth-child(3){width:80%}.srph:nth-child(4){width:60%}

/* Search: no-result offer */
.srnone{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.srnone p{margin:0}
.srrow .tag{align-self:flex-start}

/* Search page (/search/?q=): count, and the no-result state with columns and the workbench offer */
.rw-search-count{margin:0 0 4px}
.rw-search-none{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.rw-search-none p{margin:0}
.rw-search-suggest{display:flex;flex-direction:column;gap:8px}
.rw-search-suggest a.chip{text-decoration:none}

/* 404 and 410 page: heading, one line, the search form and three ways back */
.rw-error-page .wrap{display:flex;flex-direction:column;gap:16px}
.rw-error-lede{margin:0;font:400 16px/1.7 var(--font-ui-zh);color:var(--rw-color-text-secondary)}
.rw-error-page .srch{border:1px solid var(--rw-color-border);border-radius:12px;box-shadow:none}
.rw-error-page .srch .wrap{padding:16px}
.rw-error-links{display:flex;flex-wrap:wrap;gap:12px}

/* Accessibility: full-strength English step names on the article page (AA contrast on the step tint),
   44px targets for the "more filters" toggle and the breadcrumb links. */
.rw-article .sbadge em,.rw-ahero .sbadge em{opacity:1}
.ins-browser .moref summary{display:flex;align-items:center;min-height:var(--rw-touch-target)}
.rw-article nav.meta a,.rw-ahero nav.meta a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}

/* Question page: one reading column, case filter as two wrapping radio-tag groups (44px targets). */
.rw-question [hidden]{display:none!important}
.rw-qwrap{max-width:860px;display:flex;flex-direction:column;gap:18px;overflow-wrap:anywhere}
.rw-qsec{display:flex;flex-direction:column;gap:10px}
.rw-question nav.meta a,.rw-qlink{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
.rw-qlink.qrow{display:grid;grid-template-columns:auto 1fr auto;gap:10px;padding:10px 4px}
.rw-qfilter{display:flex;flex-direction:column;gap:10px}
.rw-qtags{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;border:0;min-width:0}
.rw-qtags legend{width:100%;margin-bottom:6px;padding:0}
.rw-qtag{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:var(--rw-touch-target);min-width:var(--rw-touch-target);padding:0 14px;border:1px solid var(--rw-color-border);border-radius:999px;background:var(--rw-color-surface);font:600 14px/1 var(--font-ui-zh);color:var(--rw-color-text-primary);cursor:pointer}
.rw-qtag input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.rw-qtag:has(input:checked){background:var(--rw-color-action-primary);border-color:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
.rw-qtag:has(input:focus-visible){outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-qcases{display:flex;flex-direction:column;gap:12px}
.rw-qcase{display:flex;flex-direction:column;gap:8px}
.rw-qsvc .tile{display:flex;flex-direction:column;gap:6px}
/* Article headings: anchors clear the header when jumped to. */
.rw-lsec,.rw-asec{scroll-margin-top:8px}
.rw-lsec-h2{margin:14px 0 0;font:700 22px/1.45 var(--font-ui-zh)}
.rw-lsec-h3{margin:8px 0 0;font:600 18px/1.5 var(--font-ui-zh);color:var(--rw-color-text-primary)}
/* Article pages: long titles and headings fill their column (pretty) instead of being cut into two
   short balanced lines with a wide gap on the right; the global balance rule stays for short headings.
   */
.artgrid h1,.artgrid h2,.artgrid h3,.rw-ahero h1{text-wrap:pretty}
/* Article hero (R1-R4): a low full-width band in the column's colours with the title inside and the
   column art (or nothing) beside it; the answer card overlaps its bottom edge. On phones the art is
   left out and the title is held to three lines so the answer card starts on the first screen. */
.rw-ahero{padding:24px 0 72px}
.rw-ahero-in{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;align-items:center}
.rw-ahero-text{display:flex;flex-direction:column;gap:10px;min-width:0}
/* The column tints are lighter than white cards: the grey meta text is darkened to keep AA contrast. */
.rw-ahero .meta{color:#4b5563}
.rw-ahero .d1{font-size:36px}
.rw-ahero-art .cv{border-radius:16px}
/* Interactive version entry (plugin interactive/render.php): a static .btn (48px high); without scripting it does nothing, so it is not shown (R17). */
.rw-art-interactive{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
@media (scripting:none){.rw-art-interactive{display:none}}
.rw-ahero-fact{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0}
.rw-ahero-fig{font:800 40px/1.1 var(--font-ui-zh);color:var(--cva)}
.rw-ahero-cap{font-weight:700}
.rw-ahero-fact .meta{flex-basis:100%}
.rw-ahero+.rw-article{padding-top:0}
.rw-ahero+.rw-article .art>.card:first-child{position:relative;margin-top:-48px;box-shadow:0 8px 24px rgba(15,23,42,.08)}
.rw-ahero+.rw-article .art>:not(.card):first-child{margin-top:24px}
/* The side column starts clear of the hero instead of touching its lower edge. */
.rw-ahero+.rw-article .artgrid>aside{padding-top:24px}
@media (max-width:900px){.rw-ahero-in{grid-template-columns:1fr}.rw-ahero-art{display:none}}
@media (max-width:599px){
.rw-ahero{padding:12px 0 56px}
.rw-ahero .d1{font-size:26px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rw-ahero-fig{font-size:30px}
/* The step badge takes its own row, so the tags keep one height whether the Latin font has loaded or not (no layout shift). */
.rw-ahero .chipline .sbadge{order:2;margin-top:-6px}
.rw-ahero .chipline:has(.sbadge)::before{content:"";order:1;flex-basis:100%;height:0}
}
/* Table of contents (R12-R16): one list without added numbers, two levels. From 1200px it sits at the
   top of the side column and stays in view, scrolling inside itself when taller than the screen; below
   1200px a folded copy sits in the main column after the summary. The reader's section is marked. */
.rw-toc-l{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}
.rw-toc-l a{display:flex;align-items:center;min-height:var(--rw-touch-target);padding:0 8px;border-left:3px solid transparent;font-size:14px;line-height:1.45;text-decoration:none}
.rw-toc-l .rw-toc-sub a{padding-left:22px;font-size:13px;color:var(--rw-color-text-secondary)}
.rw-toc-l a[aria-current="location"]{border-left-color:var(--rw-color-action-primary);background:var(--rw-color-surface-selected);color:var(--rw-color-text-primary);font-weight:700}
.rw-toc-m{display:none}
.rw-toc-d{display:flex;flex-direction:column;gap:4px;position:sticky;top:calc(var(--rw-hdr-h) + 16px);z-index:2;max-height:calc(100vh - var(--rw-hdr-h) - 32px);overflow-y:auto;overscroll-behavior:contain}
.rw-article .artgrid>aside{position:static;align-self:stretch}
@media (min-width:1200px){.rw-toc-track{flex:1 0 auto}}
@media (max-width:1199px){
.rw-toc-m{display:block}
.rw-toc-d{display:none}
.rw-toc-m>summary{display:flex;align-items:center;justify-content:space-between;min-height:var(--rw-touch-target);font-weight:700;cursor:pointer;list-style:none}
.rw-toc-m>summary::-webkit-details-marker{display:none}
.rw-toc-m>summary::after{content:"";flex:none;width:9px;height:9px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-3px)}
.rw-toc-m[open]>summary::after{transform:rotate(-135deg) translateY(-3px)}
}
@media print{.rw-toc{display:none!important}}

/* Article card social line. The base card lives in components.css; these rules make it a container:
   the title link stretches over the whole card, the save star sits above that layer, and the video
   badge marks the cover. Kept here so the shared component sheet stays untouched. */
.ccard:hover{box-shadow:0 8px 24px rgba(51,51,51,.08)}
.ccard:focus-within{box-shadow:0 0 0 2px var(--rw-color-focus-ring)}
.ccard-link{display:block;min-height:var(--rw-touch-target,44px);color:inherit;text-decoration:none}
.ccard-link:hover{color:inherit;text-decoration:none}
.ccard-link::after{content:"";position:absolute;inset:0;z-index:1}
.ccard-link:focus-visible{outline:none}
.ccard .new,.ccard-vid{pointer-events:none}
.ccard-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.ccard-foot .m{margin-top:0;min-width:0}
/* Phones: the card is a grid with the cover beside the text (components.css). The foot (byline,
   heat and the save star) takes the full width under both, so the byline does not wrap beside the star. */
@media (max-width:599px){
.ccard>.cv{grid-row:1/span 3}
.ccard>.ccard-foot:not(.cv):not(.new){grid-column:1/-1}
}
.ccard-act{position:relative;z-index:2;flex:none;margin:-10px -10px -10px 0}
.ccard-save{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:none;color:var(--rw-color-text-metadata);cursor:pointer}
.ccard-save svg path{fill:none;stroke:currentColor;stroke-width:1.6}
.ccard-save:hover{color:var(--rw-color-action-primary);background:var(--rw-color-ghost-hover)}
.ccard-save:focus-visible{outline:2px solid var(--rw-color-focus-ring);outline-offset:-2px}
.ccard-save[aria-pressed="true"]{color:var(--rw-color-action-primary)}
.ccard-save[aria-pressed="true"] svg path{fill:currentColor}
.ccard-vid{position:absolute;right:10px;bottom:12px;z-index:1;width:30px;height:22px;border-radius:6px;background:rgba(255,255,255,.92)}
.ccard-vid::before{content:"";position:absolute;inset:4px 6px;background:var(--cva,#333);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 14'%3E%3Crect x='0' y='1' width='12' height='12' rx='2'/%3E%3Cpath d='M13 5l5-3v10l-5-3z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 14'%3E%3Crect x='0' y='1' width='12' height='12' rx='2'/%3E%3Cpath d='M13 5l5-3v10l-5-3z'/%3E%3C/svg%3E") center/contain no-repeat}
@media (max-width:599px){.ccard-vid{right:6px;bottom:8px;width:24px;height:18px}.ccard-vid::before{inset:3px 4px}}

/* Content that needs sign-in (plugin includes/access/): the public paragraphs fade out above the
   sign-in wall; a member's full text fills .rw-gated; the checklist download sits under 模板. */
.rw-gate-public,.rw-gated{display:flex;flex-direction:column;gap:18px}
.rw-gate-public{position:relative}
.rw-gate-public::after{content:"";position:absolute;left:0;right:0;bottom:0;height:120px;background:linear-gradient(rgba(255,255,255,0),var(--rw-color-surface));pointer-events:none}
.rw-gated:empty{display:none}
.rw-wall{display:flex;flex-direction:column;align-items:center;gap:20px;padding:36px 24px;border:2px solid var(--rw-color-action-primary);border-radius:var(--rw-radius-lg);background:var(--rw-color-surface-subtle);text-align:center}
.rw-wall h2{margin:0;font:700 28px/1.35 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.rw-wall-act{display:flex;flex-wrap:wrap;justify-content:center;gap:16px}
.rw-wall-act .btn{min-width:160px;border-radius:var(--rw-radius-pill)}
.rw-wall-act .btn:not(.btn-pri){border-color:var(--rw-color-action-primary);color:var(--rw-color-action-primary)}
.rw-wall p{margin:0;color:var(--rw-color-text-primary)}
.rw-gate-failed{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.rw-gate-failed p{margin:0}
.rw-gated-aside{display:flex;flex-direction:column;gap:14px}
.rw-dl{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.rw-dl-status:empty{display:none}
@media (max-width:480px){.rw-wall{padding:28px 16px}.rw-wall h2{font-size:24px}.rw-wall-act .btn{flex:1 1 100%}}
/* Recommendations at the end of the article (R22-R24): three article cards, then the next step. */
.rw-recs{display:flex;flex-direction:column;gap:14px;margin-top:8px}
.rw-recs-title{margin:0;font:700 22px/1.45 var(--font-ui-zh)}
.rw-recs-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}
.rw-next-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.rw-next-card a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
@media print{.rw-recs{display:none}}
/* Interactive view (plugin islands/interactive-view.js, core/ix-modules.js): a full-screen modal dialog
   over the article; the page behind does not scroll. One column of modules, at most 880px wide; on
   narrow screens tables become stacked cards, so nothing scrolls sideways (R14). Targets 44px, no
   animation (R32). The sentence a 看原句 jump lands on is marked .rw-ix-hl. */
html:has(.rw-ix-view[open]){overflow:hidden}
.rw-ix-view{width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--rw-color-canvas);color:var(--rw-color-text-primary);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}
.rw-ix-view::backdrop{background:var(--rw-color-overlay-scrim)}
.rw-ix-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px max(16px,calc((100% - 880px)/2));background:var(--rw-color-surface);border-bottom:1px solid var(--rw-color-border)}
.rw-ix-headtext{min-width:0}
.rw-ix-eyebrow{margin:0;font:600 12px/1.4 var(--font-ui-zh);color:var(--rw-color-text-metadata)}
.rw-ix-title{margin:0;font:700 20px/1.4 var(--font-ui-zh);overflow-wrap:anywhere}
.rw-ix-title:focus{outline:none}
.rw-ix-title:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-ix-body{max-width:880px;margin:0 auto;padding:16px 16px 48px;display:flex;flex-direction:column;gap:16px;min-width:0}
.rw-ix-status{margin:0;font:600 16px/1.6 var(--font-ui-zh)}
.rw-ix-retry,.rw-ix-labels{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.rw-ix-dir-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.rw-ix-dir-btn{min-height:var(--rw-touch-target,44px);padding:6px 14px;border:1px solid var(--rw-color-border-interactive);border-radius:999px;background:var(--rw-color-surface);color:var(--rw-color-text-primary);font:600 14px/1.4 var(--font-ui-zh);cursor:pointer;text-align:left}
.rw-ix-dir-btn:hover,.rw-ix-src:hover{background:var(--rw-color-surface-hover)}
.rw-ix-mod,.rw-ix-last{display:flex;flex-direction:column;gap:12px;min-width:0;padding:16px;border:1px solid var(--rw-color-border);border-radius:12px;background:var(--rw-color-surface);scroll-margin-top:88px}
.rw-ix-mod-title{margin:0;font:700 18px/1.4 var(--font-ui-zh)}
.rw-ix-mod-title:focus{outline:none}
.rw-ix-mod-title:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-ix-mod-body{display:flex;flex-direction:column;gap:12px;min-width:0}
.rw-ix-chart .rw-ix-bar{fill:var(--rw-chart-1)}
.rw-ix-chart .rw-ix-line{fill:none;stroke:var(--rw-chart-1);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.rw-ix-chart .rw-ix-dot{fill:var(--rw-color-surface);stroke:var(--rw-color-info);stroke-width:2}
.rw-ix-chart .rw-ix-val{fill:var(--rw-color-text-primary);font-weight:700}
.rw-ix-table{width:100%;border-collapse:collapse;font:400 14px/1.6 var(--font-ui-zh)}
.rw-ix-table th{text-align:left;font-weight:600;color:var(--rw-color-text-secondary);border-bottom:1px solid var(--rw-color-border-strong)}
.rw-ix-table th,.rw-ix-table td{padding:8px;vertical-align:top;overflow-wrap:anywhere}
.rw-ix-table td{border-bottom:1px solid var(--rw-color-border)}
.rw-ix-fig{display:inline-flex;align-items:baseline;gap:6px}
.rw-ix-n,.rw-ix-asof,.rw-ix-k{font:400 12px/1.5 var(--font-ui-zh);color:var(--rw-color-text-metadata)}
.rw-ix-meta{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.rw-ix-src{min-height:var(--rw-touch-target,44px);min-width:var(--rw-touch-target,44px);padding:0 12px;border:1px solid var(--rw-color-border-interactive);border-radius:8px;background:var(--rw-color-surface);color:var(--rw-color-link);font:600 14px/1 var(--font-ui-zh);cursor:pointer}
.rw-ix-facts{display:flex;flex-direction:column;gap:8px}
.rw-ix-fact,.rw-ix-line-item{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.rw-ix-stage{display:flex;flex-direction:column;gap:8px}
.rw-ix-stage-h{margin:0;display:flex;align-items:center;gap:8px;font:700 15px/1.4 var(--font-ui-zh)}
.rw-ix-stage-n{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--rw-color-action-primary);color:var(--rw-color-on-action);font:700 12px/1 var(--font-ui-zh)}
.rw-ix-opts{margin:0;padding:0;border:0;display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.rw-ix-legend{margin-bottom:8px;padding:0;font:400 14px/1.5 var(--font-ui-zh);color:var(--rw-color-text-secondary)}
.rw-ix-opt{position:relative;display:inline-flex;align-items:center;min-height:var(--rw-touch-target,44px);padding:0 16px;border:1px solid var(--rw-color-border-interactive);border-radius:999px;background:var(--rw-color-surface);font:600 14px/1.4 var(--font-ui-zh);cursor:pointer}
.rw-ix-opt input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.rw-ix-opt:has(input:checked){background:var(--rw-color-action-primary);border-color:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
.rw-ix-opt:has(input:focus-visible){outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-ix-detail{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:10px 12px;border-left:3px solid var(--rw-color-action-primary);background:var(--rw-color-surface-subtle)}
.rw-ix-detail[hidden],.rw-ix-mod[hidden]{display:none}
.rw-ix-quote{margin:0;font:400 15px/1.7 var(--font-ui-zh)}
.rw-ix-faq{border-top:1px solid var(--rw-color-border)}
.rw-ix-faq summary{display:flex;align-items:center;min-height:var(--rw-touch-target,44px);padding:6px 0;font:600 15px/1.5 var(--font-ui-zh);cursor:pointer}
.rw-ix-ans{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:0 0 12px}
.rw-ix-ans p{margin:0}
.rw-ix-carry{margin:0}
.rw-ix-hl{background:var(--rw-color-surface-warning);box-shadow:0 0 0 4px var(--rw-color-surface-warning);border-radius:2px;scroll-margin-top:8px}
.rw-ix-hl:focus{outline:3px solid var(--rw-color-focus-ring);outline-offset:4px}
@media (max-width:599px){
.rw-ix-title{font-size:18px}
.rw-ix-body{padding:12px 12px 40px}
.rw-ix-mod,.rw-ix-last{padding:12px}
.rw-ix-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rw-ix-table tr{display:block;padding:8px 0;border-bottom:1px solid var(--rw-color-border)}
.rw-ix-table td{display:grid;grid-template-columns:5em minmax(0,1fr);gap:8px;padding:4px 0;border:0}
.rw-ix-table td::before{content:attr(data-label);font:400 12px/1.6 var(--font-ui-zh);color:var(--rw-color-text-metadata)}
}
/* In-article embeds of the interactive version (plugin islands/interactive-embed.js, U8): a card after
   its section. Hidden without JavaScript (R17); the reading-bar island unhides it with a reserved
   height before the module loads, and the module mounts about a screen before it shows, so the text
   does not jump (R31). The title is a paragraph, not a heading (KTD8). Targets 44px, no animation. */
.rw-ix-embed{display:flex;flex-direction:column;gap:var(--rw-space-3);min-width:0;min-height:320px;margin:var(--rw-space-6) 0;padding:var(--rw-space-4);border:1px solid var(--rw-color-border);border-radius:var(--rw-radius-md);background:var(--rw-color-surface)}
.rw-ix-embed[hidden]{display:none}
.rw-ix-embed[data-rw-ix-state="shown"]{min-height:0}
.rw-ix-embed-title{margin:0;font:700 18px/1.4 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.rw-ix-embed-title:focus{outline:none}
.rw-ix-embed-title:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-ix-embed-more{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--rw-space-2)}
.rw-ix-embed-open{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);padding:0;border:0;background:none;color:var(--rw-color-link);font:600 14px/1.4 var(--font-ui-zh);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.rw-ix-embed-open:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
@media (max-width:599px){.rw-ix-embed{padding:var(--rw-space-3)}}
/* Calculator of the interactive version (U7; R12, KTD12): the formula beside its sentence, one input per
   variable with its range, 算一算 and an aria-live result marked 估算. No animation. */
.rw-ix-calc{display:flex;flex-direction:column;gap:var(--rw-space-4);min-width:0}
.rw-ix-calc-box{display:flex;flex-direction:column;align-items:flex-start;gap:var(--rw-space-3);min-width:0}
.rw-ix-calc-formula{display:flex;flex-direction:column;align-items:flex-start;gap:var(--rw-space-2);width:100%;box-sizing:border-box;padding:var(--rw-space-3);border-left:3px solid var(--rw-color-action-primary);background:var(--rw-color-surface-subtle)}
.rw-ix-calc-formula p{margin:0}
.rw-ix-expr{font:700 var(--rw-text-body)/1.6 var(--font-ui-zh);color:var(--rw-color-text-primary);overflow-wrap:anywhere}
.rw-ix-calc-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--rw-space-3);width:100%}
.rw-ix-calc-field{display:flex;flex-direction:column;gap:var(--rw-space-1);min-width:0}
.rw-ix-calc-field p{margin:0}
.rw-ix-calc-label{font:600 var(--rw-text-body-sm)/1.5 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.rw-ix-calc-input{min-height:var(--rw-touch-target);box-sizing:border-box}
.rw-ix-calc-input:focus-visible,.rw-ix-calc-run:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-ix-calc-run{min-height:var(--rw-touch-target)}
.rw-ix-calc-out{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--rw-space-2);font:400 var(--rw-text-body)/1.6 var(--font-ui-zh);color:var(--rw-color-text-primary)}
.rw-ix-calc-out:empty{display:none}
.rw-ix-calc-out strong{font-size:var(--rw-text-h3)}
.rw-ix-calc-out[data-rw-ix-state="hint"]{padding:var(--rw-space-2) var(--rw-space-3);border-radius:var(--rw-radius-sm);background:var(--rw-color-surface-warning)}
.rw-ix-calc-box>.rw-ix-k{margin:0}

/* source: page-member.css */
/* Member area: the avatar menu in the header, the member-area pages (lists, hub, sign-in prompt) and the
   first-login panel. The page sections reuse the decisions page layout helpers (rw-dcsec). */

/* Avatar menu: the initial box is the face of a 44px button; the menu opens under it, right-aligned. */
.rw-acct{position:relative;display:inline-flex}
.rw-acct-btn{display:inline-flex;align-items:center;justify-content:center;min-width:var(--rw-touch-target);min-height:var(--rw-touch-target);padding:0;border:0;border-radius:var(--rw-radius-pill);background:none;cursor:pointer}
.rw-acct-btn:focus-visible{outline:2px solid var(--rw-color-focus-ring);outline-offset:2px}
.rw-acct-btn[aria-expanded="true"] .ibox{box-shadow:0 0 0 2px var(--rw-color-action-primary)}
.rw-acct-menu{position:absolute;top:100%;right:0;z-index:30;display:flex;flex-direction:column;min-width:200px;max-width:calc(100vw - 32px);padding:8px;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-radius:var(--rw-radius-md);box-shadow:var(--rw-shadow-overlay)}
.rw-acct-menu[hidden]{display:none}
.rw-acct-who{margin:0 0 4px;padding:8px 12px;border-bottom:1px solid var(--rw-color-border);font-size:13px;color:var(--rw-color-text-secondary);overflow-wrap:anywhere}
.rw-acct-who strong{color:var(--rw-color-text-primary)}
.rw-acct-menu a{display:flex;align-items:center;min-height:var(--rw-touch-target);padding:0 12px;border-radius:var(--rw-radius-sm);color:var(--rw-color-text-primary);font-size:14px;text-decoration:none}
.rw-acct-menu a:hover,.rw-acct-menu a:focus-visible{background:var(--rw-color-surface-hover)}

/* Member-area pages */
.rw-ma-guest{display:flex;flex-direction:column;gap:12px;max-width:640px}
.rw-ma{display:flex;flex-direction:column;gap:12px;min-width:0}
.rw-ma [hidden]{display:none!important}
.rw-ma-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-top:1px solid var(--rw-color-border)}
.rw-ma-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:64px;padding:10px 0;border-bottom:1px solid var(--rw-color-border)}
.rw-ma-title{display:flex;align-items:center;min-height:var(--rw-touch-target);min-width:0;overflow-wrap:anywhere;font-weight:600;color:var(--rw-color-text-primary)}
.rw-ma-row .sugg{min-height:var(--rw-touch-target)}
.rw-ma-skel{grid-template-columns:64px minmax(0,1fr)}
.rw-ma-skel .skel:last-child{width:60%}
.rw-ma-note{display:flex;flex-direction:column;gap:10px;max-width:640px}
.rw-ma .sugg,.rw-ma-note .sugg{min-height:var(--rw-touch-target)}
.rw-ma-hub{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.rw-ma-hub .card{display:flex;align-items:center;min-height:64px;color:var(--rw-color-text-primary);font-weight:600;text-decoration:none}
@media (max-width:599px){
  .rw-ma-row{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
  .rw-ma-row .tag{grid-column:1 / -1}
}

/* First-login panel: non-modal, in a corner on wide screens, above the tab bar on phones. */
.rw-fl{position:fixed;right:24px;bottom:24px;z-index:45;display:flex;flex-direction:column;gap:12px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);overflow-y:auto;padding:22px}
.rw-fl-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.rw-fl .sugg{min-height:var(--rw-touch-target)}
.rw-fl .rw-chip-radio:has(input:checked){background:var(--rw-color-surface-selected);border-color:var(--rw-color-border-selected)}
@media (max-width:760px){
  .rw-fl{left:16px;right:16px;bottom:calc(76px + env(safe-area-inset-bottom));width:auto;max-height:calc(100vh - 120px);padding:18px 16px}
}

/* Unread notifications: a number on the avatar, apart from the review dot on 我的决定. */
.rw-acct-btn{position:relative}
.rw-acct-badge{position:absolute;top:0;right:-4px;min-width:20px;height:20px;padding:0 5px;box-sizing:border-box;border-radius:var(--rw-radius-pill);background:var(--rw-color-action-primary);color:var(--rw-color-on-action);font-size:12px;font-weight:700;line-height:20px;text-align:center;box-shadow:0 0 0 2px var(--rw-color-surface)}
.rw-acct-badge[hidden]{display:none}

/* 通知: the list rows say what happened; unread rows carry a 未读 mark; a taken-down comment can be appealed in place. */
.rw-nt{display:flex;flex-direction:column;gap:12px;min-width:0}
.rw-nt [hidden]{display:none!important}
.rw-nt .sugg{min-height:var(--rw-touch-target)}
.rw-nt-row{grid-template-columns:auto minmax(0,1fr)}
.rw-nt-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.rw-nt-row:not(.rw-nt-unread) .rw-ma-title{font-weight:400}
.rw-nt-meta{color:var(--rw-color-text-secondary)}
.rw-nt-new{display:inline-block;padding:0 6px;border-radius:var(--rw-radius-pill);background:var(--rw-color-action-primary);color:var(--rw-color-on-action);font-size:12px;font-weight:700}
.rw-nt-appeal{grid-column:1 / -1;display:flex;flex-direction:column;gap:8px;max-width:640px}
.rw-nt-appeal-text{width:100%;box-sizing:border-box;min-height:88px;padding:10px 12px;border:1px solid var(--rw-color-border);border-radius:var(--rw-radius-sm);background:var(--rw-color-surface);color:var(--rw-color-text-primary);font:inherit;font-size:14px}
.rw-nt-appeal .btn{align-self:flex-start;min-height:var(--rw-touch-target)}

/* 提醒与订阅: two groups of check rows, the channel note, then 保存设置. */
.rw-st{gap:16px;max-width:640px}
.rw-st-group{display:flex;flex-direction:column;gap:8px;min-width:0;margin:0;padding:0;border:0}
.rw-st-hint{display:block;color:var(--rw-color-text-secondary);font-size:12px}
.rw-st .btn{min-height:var(--rw-touch-target)}

/* 数据与隐私: export and erase, one card each. */
.rw-pv{gap:16px;max-width:720px}
.rw-pv-sec{display:flex;flex-direction:column;gap:12px;min-width:0}
.rw-pv-form{display:flex;flex-direction:column;gap:12px;margin:0}
.rw-pv .btn{min-height:var(--rw-touch-target)}
.rw-pv-form .chk{align-self:flex-start}
.rw-pv [data-rw-pv-done]:focus{outline:none}
/* 我的雷达 (includes/member/radar.php) */
.rw-rd{display:flex;flex-direction:column;gap:12px;margin-bottom:24px;min-width:0}
.rw-rd-themes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.rw-rd-theme{display:flex;flex-direction:column;gap:8px;min-width:0}
.rw-rd-name{display:flex;align-items:center;min-height:var(--rw-touch-target);font-weight:600;color:var(--rw-color-text-primary);overflow-wrap:anywhere}
.rw-rd-signals{margin:0;padding-left:1.1em;display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}
.rw-rd .sugg{min-height:var(--rw-touch-target)}

/* Reviews due (Jackie 2026-11-08): 我的决定 lives in the avatar menu only, so the avatar carries the
   reminder: a red dot with one soft pulse, a 今天要复盘 line on top of the menu, a count on 我的决定. */
.rw-acct-due{position:absolute;bottom:2px;left:2px;width:12px;height:12px;border-radius:999px;background:var(--rw-red);box-shadow:0 0 0 2px var(--rw-color-surface)}
.rw-acct-due[hidden]{display:none}
@media (prefers-reduced-motion:no-preference){.rw-acct-due::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 var(--rw-red);animation:rw-due-pulse 1.6s ease-out 3}}
@keyframes rw-due-pulse{from{box-shadow:0 0 0 0 rgba(229,20,20,.5)}to{box-shadow:0 0 0 10px rgba(229,20,20,0)}}
.rw-acct-on .ibox{box-shadow:0 0 0 2px var(--rw-color-action-primary)}
.rw-acct-menu a.rw-acct-alert{gap:8px;margin:0 0 4px;background:var(--rw-color-surface-danger);color:var(--rw-color-danger);font-weight:700}
.rw-acct-menu a.rw-acct-alert[hidden]{display:none}
.rw-acct-menu a.rw-acct-alert span:last-child{margin-left:auto}
.rw-acct-menu a.rw-acct-alert .ico{width:18px;height:18px;flex:none}
.rw-acct-cnt{margin-left:auto;padding:2px 8px;border-radius:var(--rw-radius-pill);background:var(--rw-color-danger);color:var(--rw-color-on-danger);font-size:12px;font-weight:700;line-height:18px}
.rw-acct-cnt[hidden]{display:none}
.rw-acct-menu:has(.rw-acct-alert:not([hidden])){min-width:260px}
.rw-acct-menu a.rw-acct-alert span:first-of-type{white-space:nowrap}

/* source: page-services.css */
/* Services and academy pages: layout helpers replacing the prototype's inline styles, and the
   switch panels and forms rendered by the Runwise widgets. Shares the rw-static scope of page-static.css. */
.elementor .rw-static .e-div-block-base:is(.uvp,.teamb,.howto){display:grid}
.elementor .rw-static .e-div-block-base.faq{display:flex}
.elementor .e-div-block-base.rw-static.rw-pad28{padding-top:28px;padding-bottom:28px}
.elementor .e-div-block-base.rw-static.rw-pt28{padding-top:28px}
.elementor .e-div-block-base.rw-static.rw-camps-sec{padding-top:32px;padding-bottom:8px}
.howto.rw-howto1{grid-template-columns:1fr}
.rw-d36{font-size:36px}
.rw-mb8{margin:0 0 8px}
.rw-ring-col{display:flex;justify-content:center}
.rw-camp-one{color:var(--rw-color-text-secondary);text-align:left}
.rw-warn{color:var(--rw-color-warning)}
.rw-panel[hidden],.rw-apply [hidden]{display:none!important}
.rw-switch-part{display:flex;flex-direction:column;gap:14px}
/* Steps a service or camp does not cover: neutral rail and tint, text keeps full contrast. */
.lanerow.rw-lane-off{--sl:var(--rw-color-border-strong);background:var(--rw-color-surface-subtle)}
.lanerow.rw-lane-off .sbox{filter:grayscale(1)}
.rw-apply .rw-chip-radio{position:relative}
@media (max-width:599px){.rw-d36{font-size:30px}}
/* Click targets: the Upskill Pro link spans the card, the case link is its own 44px line. */
.rw-static .usp .uplink{grid-column:1/-1;justify-self:start;min-height:44px}
.trust1 .rw-case-link{display:inline-flex;align-items:center;min-height:44px}
/* B10: phones keep the primary action within reach between the hero and the form (forms.js), in a
   slim bar above the tab bar. Below the menu scrim (19) and the cookie banner (40). */
.rw-stickycta{display:none}
@media (max-width:760px){
.rw-stickycta:not([hidden]){display:flex;position:fixed;left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:16;padding:8px 16px;background:var(--rw-color-surface);border-top:1px solid var(--rw-color-border);box-shadow:0 -4px 12px rgba(16,24,40,.06)}
.rw-stickycta .btn{flex:1;justify-content:center;min-height:var(--rw-touch-target)}
}

/* 为什么是我们 (Jackie 2026-11-08, differentiation practice: each reason gets its own picture, number
   and accent, so the three read as distinct promises at a glance). The picture is the claim art. */
.why .g3{counter-reset:why}
.why .rw-why{--acc:var(--rw-blue);--acc-ink:var(--rw-color-action-primary);--acc-soft:var(--rw-soft-blue);counter-increment:why;position:relative;display:flex!important;flex-direction:column;gap:8px;padding:0 22px 22px;overflow:hidden;background:var(--rw-color-surface);border:1px solid var(--rw-color-border);border-top:var(--rw-border-accent-width) solid var(--acc);transition:transform .15s,box-shadow .15s}
.why .rw-why-outcome{--acc:var(--rw-green);--acc-ink:var(--rw-color-success);--acc-soft:var(--rw-soft-green)}
.why .rw-why-carry{--acc:var(--rw-violet);--acc-ink:var(--rw-violet);--acc-soft:var(--rw-soft-violet)}
.why .rw-why::before{content:"";display:block;height:140px;margin:0 -22px 30px;background:var(--acc-soft) no-repeat 70% 55%/auto 112px;transition:background-size .25s}
.why .rw-why-duo::before{background-image:url("../illustrations/claims/duo.svg")}
.why .rw-why-outcome::before{background-image:url("../illustrations/claims/outcome.svg")}
.why .rw-why-carry::before{background-image:url("../illustrations/claims/carry.svg")}
.why .rw-why::after{content:"0" counter(why);position:absolute;top:14px;left:22px;font:800 34px/1 var(--font-display);letter-spacing:-.04em;color:var(--acc-ink)}
.why .rw-why .uvi{position:absolute;top:112px;left:22px;width:56px;height:56px;border-radius:16px;background:var(--rw-color-surface);color:var(--acc-ink);box-shadow:0 0 0 4px var(--acc-soft),var(--rw-shadow-card)}
.why .rw-why b{font-size:20px;line-height:1.35}
.why .rw-why p{font-size:15px}
.why .rw-why .lnk{margin-top:auto;font-weight:700}
@media (hover:hover) and (prefers-reduced-motion:no-preference){.why .rw-why:hover{transform:translateY(-4px);box-shadow:var(--rw-shadow-card)}.why .rw-why:hover::before{background-size:auto 124px}}

/* Two-step booking form (Jackie 2026-11-08). */
.rw-steps .rw-step{display:flex;flex-direction:column;gap:14px}
.rw-steps .rw-step[hidden]{display:none}
.rw-stepbar{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 4px;padding:0;list-style:none;counter-reset:st}
.rw-stepbar[hidden]{display:none}
.rw-stepbar li{counter-increment:st;display:flex;align-items:center;gap:8px;padding-top:10px;border-top:4px solid var(--rw-color-border);font-size:13px;font-weight:700;color:var(--rw-color-text-secondary)}
.rw-stepbar li::before{content:counter(st);display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--rw-color-border);color:var(--rw-color-text-primary);font-size:12px}
.rw-stepbar li.on{border-top-color:var(--rw-color-action-primary);color:var(--rw-color-action-primary)}
.rw-stepbar li.on::before{background:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
.rw-steps [data-rw-asked][hidden],.rw-steps [data-rw-channel-hint][hidden]{display:none}
.rw-steps [data-rw-back]{min-height:44px}

/* source: page-signals.css */
/* Growth signals page: layout helpers that replace the prototype's inline styles on Elementor
   elements and inside the signals widgets, plus the keyboard-readable chart and single-accent changes. */

/* Elementor's Atomic div block brings its own display, padding and min-width; every top-level section
   on this page carries rw-gsec, and the prototype classes get their layout back inside that scope. */
.elementor .e-div-block-base.rw-gsec,.elementor .rw-gsec .e-div-block-base.e-con{min-width:0;padding:0}
.elementor .rw-gsec .e-div-block-base:is(.herog,.g2){display:grid}
.elementor .rw-gsec .e-div-block-base:is(.rw-gcol12,.rw-gcol14,.rw-gcol16){display:flex}
.elementor .e-div-block-base.rw-gsec.sec{padding:64px 0}
.elementor .e-div-block-base.rw-gsec.rw-ghero{padding:40px 0 24px}
.elementor .e-div-block-base.rw-gsec.rw-gdaily{padding-top:28px}
.elementor .rw-gsec .e-div-block-base.wrap{padding:0 48px}
@media (max-width:599px){
.elementor .e-div-block-base.rw-gsec.sec{padding:32px 0}
.elementor .e-div-block-base.rw-gsec.rw-ghero{padding:32px 0 24px}
.elementor .rw-gsec .e-div-block-base.wrap{padding:0 16px}
}
.rw-gsec .elementor-widget:not(:last-child){margin-block-end:0}
.rw-gsec .elementor-widget-text-editor p:last-child{margin-bottom:0}
.rw-gsec .rw-widget{min-width:0}
.rw-gsec .herog{margin-bottom:8px}
.rw-gsec .kick{margin:0}
/* Daily signals: today's cards, then the rest of the week under their own small heading. */
.rw-gsec [data-testid="rw-daily-signals"]:has([data-rw-daily]){display:flex;flex-direction:column;gap:16px}
.rw-gsec .rw-gdaily-more{margin-top:12px}

.rw-gcol6,.rw-gcol8,.rw-gcol12,.rw-gcol14,.rw-gcol16{display:flex;flex-direction:column;min-width:0}
.rw-gcol6{gap:6px}
.rw-gcol8{gap:8px}
.rw-gcol12{gap:12px}
.rw-gcol14{gap:14px}
.rw-gcol16{gap:16px}
.rw-m0{margin:0}
.rw-gmt4{margin-top:4px}
.rw-gsub{color:var(--rw-color-text-secondary)}
.rw-grow{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.rw-gbtns{display:flex;flex-wrap:wrap;gap:10px}
.rw-ghead{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}
.rw-gcenter{align-items:center}
.rw-gsr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Board */
.rw-gboard{display:flex;flex-direction:column;gap:14px;min-width:0}
.rw-gboard .lnk,.rw-gfeat .lnk{min-height:var(--rw-touch-target)}
/* The rules link and the table toggle under the chart share one baseline (an inline <a> ignores min-height). */
.rw-gboard .rw-ghead .lnk{display:inline-flex;align-items:center}
.rw-gfeat .go{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
.rw-gfeat .hfv{flex-wrap:wrap}
/* Rises and falls: arrows in the one accent colour, never red or green */
.rw-gfeat .hfv .chg{color:var(--rw-color-action-primary)}
.rw-gboard .chg{color:var(--rw-color-text-secondary)}
.rw-gplot{border-radius:8px;cursor:crosshair;touch-action:pan-y}
.rw-gplot:focus-visible{outline:3px solid var(--rw-color-focus-ring);outline-offset:var(--rw-focus-offset)}
.rw-gtbl[hidden]{display:none}
.rw-gtbl{overflow-x:auto;border:1px solid var(--rw-color-border);border-radius:12px;background:var(--rw-color-surface)}
.rw-gtbl .rvr{grid-template-columns:1.8fr 1fr repeat(5,.7fr)}
.rw-geb{margin:0 0 6px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.rw-ghot{font-weight:700;margin-top:4px;display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
.rw-gboard .rrow{min-height:var(--rw-touch-target)}

/* Daily signals and weekly digest */
.rw-gcard{display:flex;flex-direction:column;gap:8px;border-top:4px solid var(--rw-blue)}
.rw-gct{font-size:17px;line-height:1.5}
.rw-gend{margin-top:auto}
.rw-gcard .sugg{min-height:var(--rw-touch-target)}
/* A signal's source links to the original when the snapshot has a URL; it is a link on its own line, so it needs the full touch target. */
.rw-gcard .src a,[data-rw-weekly-rest] .src a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);min-width:var(--rw-touch-target)}
.rw-gweekly{align-items:start}
.rw-gqrow{grid-template-columns:80px 1fr auto}
.rw-gfield{margin:0 0 6px;font-weight:600}
.rw-gweekly [data-rw-sub-msg][hidden],.rw-gweekly [data-rw-sub-member-msg][hidden]{display:none}
@media (max-width:599px){.rw-gqrow{grid-template-columns:64px 1fr auto}}

/* Phones list the top rows only, but a theme chosen by link or tap always stays visible. */
@media (max-width:599px){.brank .rrow.on{display:grid}}

/* Weekly issue page: edition links look like the subscription chips; prev / next stack on phones. */
.rw-gweek a.chip{text-decoration:none}
@media (max-width:599px){.rw-gweek-nav{flex-direction:column;align-items:stretch}}
/* Forwarding: the share card scales to the column; the hand-copy text spans it. */
.rw-gcardsvg svg,.rw-gcardsvg img{display:block;width:100%;max-width:600px;height:auto;border-radius:12px}
.rw-gforward [hidden]{display:none}
.rw-gforward textarea{width:100%;min-height:var(--rw-touch-target);font:400 14px/1.6 var(--font-ui-zh);padding:10px;border:1px solid var(--rw-color-border-interactive);border-radius:8px;resize:vertical}
@media (max-width:599px){.rw-gforward .rw-gbtns{flex-direction:column;align-items:stretch}}
/* 本周三件事: each line links to its card and keeps the full touch target; the cards leave room above when jumped to. */
.rw-gthree-list{margin:0;padding-left:1.4em;display:grid;gap:var(--rw-space-1)}
.rw-gthree{display:block;min-height:var(--rw-touch-target);padding:10px 0;color:inherit;text-decoration:none}
.rw-gthree strong{color:var(--rw-color-link);text-decoration:underline}
.rw-gweek .rw-gcard{scroll-margin-top:8px}
.rw-gweek-few a,.rw-gweek-sub a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
/* Phones: the edition headline one step smaller (the .d3 size). */
@media (max-width:599px){.rw-gweek .d2{font-size:22px}}
/* Digest subscription: the address field stays out of the layout until a channel is chosen. */
[data-rw-subscribe] .fld[hidden]{display:none}
/* Subscribe card: the visitor part keeps the card's own layout; a signed-in member sees the member part instead. */
.rw-gsub-guest{display:contents}
.rw-gsub-member{display:flex;flex-direction:column;gap:12px}
.rw-gsub-guest[hidden],.rw-gsub-member[hidden]{display:none}
.rw-gsub-member a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);align-self:flex-start}

/* Hero hot tiles (Jackie 2026-11-07): the board's three hot tiles in the hero's right column, one at a
   time in a row that scrolls by tile (arrows and dots; never by itself). The filter bar under the hero
   picks the industry for these tiles and the trend chart alike. */
.rw-ghtiles{display:flex;flex-direction:column;gap:12px;min-width:0;padding:16px;border:1px solid var(--rw-color-border);border-radius:var(--r-l);background:var(--rw-color-surface);box-shadow:var(--rw-shadow-card)}
.rw-ghhead,.rw-ghfoot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rw-ghhead .eb{display:inline-flex;align-items:center;gap:6px;margin:0}.rw-ghhead .eb svg{width:18px;height:18px;color:var(--rw-color-action-primary)}
.rw-ghtiles .arr{display:flex;gap:6px}
.rw-ghtiles .arr button{width:44px;height:44px;border-radius:999px;border:1px solid var(--rw-color-border);background:var(--rw-color-surface);font-size:18px;cursor:pointer}
.rw-ghtiles .arr button:hover{background:var(--rw-color-surface-hover)}
.rw-ghtiles .btiles{display:grid!important;grid-auto-flow:column;grid-auto-columns:100%!important;grid-template-columns:none!important;gap:0!important;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0!important;padding:0!important}
.rw-ghtiles .btiles::-webkit-scrollbar{display:none}
.rw-ghtiles .btile{scroll-snap-align:start;min-height:200px;justify-content:center;border:0;border-radius:12px;background:var(--rw-color-surface-subtle);padding:22px}
.rw-ghtiles .btile strong{font-size:22px;line-height:1.35}
.rw-ghtiles .btile .bval{font-size:56px}
.rw-ghtiles .dots{display:flex;gap:4px}
.rw-ghtiles .dots button{width:44px;height:44px;border:0;background:none;padding:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.rw-ghtiles .dots button span{width:10px;height:10px;border-radius:999px;background:#d0d0d6;display:block;transition:width .2s}
.rw-ghtiles .dots button.on span{width:26px;background:var(--rw-color-action-primary)}
.rw-gbar{margin:0 0 12px}
.rw-gbar .rw-gsub{flex:1 1 280px}
@media (prefers-reduced-motion:reduce){.rw-ghtiles .btiles{scroll-behavior:auto}}

/* Ninety-day curve on each hero tile (Jackie 2026-11-08): a filled line to the right of the heat. */
.rw-ghtiles .bvrow{display:flex;align-items:flex-end;gap:12px;flex-wrap:nowrap}
.rw-ghtiles .bspark{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:1 1 auto;min-width:96px;max-width:240px;margin-left:auto}
.rw-ghtiles .bspark svg{display:block;width:100%;height:56px;overflow:visible}
.rw-ghtiles .bspark .a{fill:var(--rw-color-surface-info);stroke:none}
.rw-ghtiles .bspark .l{fill:none;stroke:var(--rw-chart-1);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.rw-ghtiles .bspark-l{font-size:12px;color:var(--rw-color-text-secondary)}
.btiles:not(.rw-ghtiles .btiles) .bspark{display:none}

/* source: page-solutions.css */
/* Growth solutions page and problem pages: layout helpers that replace the prototype's inline styles
   on Elementor elements, plus the small pieces the solutions widgets need. */

/* Elementor's atomic blocks get a default padding and display; solutions sections reset them so the
   prototype classes (sec, wrap, g2, herog ...) decide the layout. */
.elementor .rw-ssec .e-div-block-base.e-con{min-width:0;padding:0}
.elementor .e-div-block-base.rw-ssec{padding:64px 0}
.elementor .rw-ssec .e-div-block-base.wrap{padding:0 48px}
.elementor .rw-ssec .e-div-block-base:is(.g2,.herog){display:grid}
.elementor .rw-ssec .e-div-block-base:is(.rw-scol12,.rw-scol14,.rw-scol16,.rw-scol18,.rw-shead){display:flex}
.elementor .e-div-block-base.rw-ssec.rw-shero{padding:44px 0 36px;border-bottom:1px solid var(--rw-color-border)}
@media (max-width:599px){
  .elementor .e-div-block-base.rw-ssec{padding:32px 0}
  .elementor .e-div-block-base.rw-ssec.rw-shero{padding:44px 0 36px}
  .elementor .rw-ssec .e-div-block-base.wrap{padding:0 16px}
}
.rw-ssec .elementor-widget:not(:last-child){margin-block-end:0}
.rw-ssec .elementor-widget-text-editor p:last-child{margin-bottom:0}

.rw-scol12,.rw-scol14,.rw-scol16,.rw-scol18{flex-direction:column;min-width:0}
.rw-scol12{gap:12px}
.rw-scol14{gap:14px}
.rw-scol16{gap:16px}
.rw-scol18{gap:18px}
.rw-sstart{align-items:start}
.rw-min0{min-width:0}
.rw-m0{margin:0}
.rw-smt8{margin-top:8px}
.rw-ssub{color:var(--rw-color-text-secondary)}
.rw-skick .kick{margin:0}
.rw-shead{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px}
.rw-slink{font-weight:700;display:inline-flex;align-items:center;min-height:44px}

/* Research period line and the selection criteria, opened from the "入选标准" button */
.rw-srow{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}
.rw-rule>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.rw-rule>summary::-webkit-details-marker{display:none}
.rw-rule[open]{flex-basis:100%}
.rw-rulecard{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.rw-rulecard p{margin:0}

/* Widget wrappers stretch inside the prototype grids */
.rw-ssec .herog>.elementor-widget,.rw-ssec .herog .rw-widget{min-width:0}
.rw-ssec .rw-widget{display:flex;flex-direction:column;gap:16px;min-width:0}
.rw-features{display:flex;flex-direction:column}
.rw-features .hfeat[hidden],[data-rw-hot-lite-wrap][hidden],.gen[hidden],[data-rw-finder-empty][hidden]{display:none}
[data-rw-hot-lite-wrap]{display:flex;flex-direction:column;gap:12px}

/* Wide tables scroll inside their box, never the page */
.tblbox{overflow-x:auto;border:1px solid var(--rw-color-border);border-radius:12px;background:var(--rw-color-surface)}
.rule-method{border-left:5px solid var(--rw-violet)}

/* Finder answer rows */
.rw-reason{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--rw-color-border);padding:6px 0}

/* Later services under "之后的路径" */
.rw-later{display:flex;flex-direction:column;gap:10px;margin-top:6px}

/* Industry switch on problem pages: links styled like the segmented control's buttons */
.seg a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target);padding:0 14px;border-radius:8px;font:600 14px/1 var(--font-ui-zh);color:var(--rw-color-text-secondary);text-decoration:none}
.seg a.on{background:var(--rw-color-surface);color:var(--rw-color-text-primary);box-shadow:0 1px 3px rgba(51,51,51,.15)}
.rw-ind-switch{align-self:flex-start}
.rw-shead>.elementor-widget,.rw-shead>.e-con{width:auto;flex:0 1 auto}

/* Audit: 44px targets for the disclosure summaries, AA contrast for the step name in the stuck panel */
.rw-rule>summary,.rw-widget details.more>summary,.rw-problem details.more>summary{min-height:var(--rw-touch-target);display:flex;align-items:center}
.rw-rule>summary{display:inline-flex}
[data-rw-stuck-panel] .sbadge em{opacity:1}
/* The mobile drawing's step chips stay fully opaque (dimming fails contrast); the chosen one is outlined */
[data-rw-stuck-panel] .dlwrap[class] .dlchips .sbadge.sbadge{opacity:1}
[data-rw-stuck-panel] .dlchips .sbadge em{opacity:1}
.dlwrap.a1 .dlchips .s1,.dlwrap.a2 .dlchips .s2,.dlwrap.a3 .dlchips .s3,.dlwrap.a4 .dlchips .s4,.dlwrap.a5 .dlchips .s5{outline:2px solid currentColor;outline-offset:1px}
/* Matrix links are full-height targets */
.tblbox .rvr a{min-height:var(--rw-touch-target);display:flex!important;align-items:center}

/* Problem pages: step buttons and the breadcrumb link reach 44px */
.rw-problem .sugg{min-height:var(--rw-touch-target)}
.rw-problem nav.meta a{display:inline-flex;align-items:center;min-height:var(--rw-touch-target)}
/* Industry solution pages and the industry summaries on /solutions/ (render/solutions-industry.php). */
.rw-icol{display:flex;flex-direction:column;gap:16px;min-width:0}
.rw-icol[hidden]{display:none}
.rw-ihead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px}
.rw-ihead h2{margin:0}
.rw-igrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:899px){.rw-igrid3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:599px){.rw-igrid3{grid-template-columns:minmax(0,1fr)}}
.rw-ihero{align-items:center}
.rw-ifeat .rise{height:100%}
.pill-sw a.indtag,.rw-isum-tabs [role="tab"]{min-height:44px;display:inline-flex;align-items:center}
.pill-sw a.indtag.on{background:var(--rw-color-surface-selected);border-color:var(--rw-color-border-selected)}
.rw-imore{display:none}
@media (max-width:699px){.rw-iarts:not(.is-open)>:nth-child(n+4){display:none}.rw-imore{display:inline-flex;align-self:flex-start}}
.rw-isum{display:flex;flex-direction:column;gap:20px;min-width:0}
.rw-isum[hidden],.rw-iprobs [hidden]{display:none}
/* Mobile: the ten-problem list is compact (title, domain, link); evidence stays on the four written solutions above. */
@media (max-width:699px){.rw-iprobs .hc-ev{display:none}.rw-iprobs .hcard{padding:14px 16px;gap:6px}.rw-iprobs .hcard .hc-t{font-size:16px}}
/* Problem page (2026-11 rework): linked signal in step 01, fit/unfit fold, the industry's other problems. */
.rw-psig{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.rw-psig .rise{flex:1 1 280px;max-width:420px}
.rw-pfit{display:flex;flex-direction:column;gap:8px}
/* Problem hero (Jackie 2026-11-07): two equal columns that end on one bottom edge (.rw-split). The
   right column's 适合与不适合 card is open and grows to fill, so the method line closes the column
   level with the start button's note on the left; the left column's start block likewise sits at
   its foot when the right column is the taller one. */
.rw-phead{display:flex;flex-direction:column;gap:14px;min-width:0}
.rw-phead>[data-testid="problem-start-note"],.rw-phead>div:has([data-testid="problem-start"]){flex:none}
.rw-phead>div:has([data-testid="problem-start"]){margin-top:auto}
.rw-pside{display:flex;flex-direction:column;gap:12px;min-width:0}
.rw-pside>.rw-pfit[open]{flex:1 1 auto}
@media (max-width:899px){.rw-phead>div:has([data-testid="problem-start"]){margin-top:0}}
.rw-pfit summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:700}
.rw-psibs{margin-top:14px;display:flex;flex-direction:column;gap:4px}
.rw-psib{display:block;min-height:44px;padding:10px 4px;font-size:14px;font-weight:600}
/* Mobile problem page (B6): the rail gives way to the steps; the industry's other problems follow "谁来做" (a second copy, .rw-psibs-m). */
.rw-psibs-m{display:none}
@media (max-width:699px){.rw-problem .wsx>aside.sticky{display:none}.rw-psibs.rw-psibs-m{display:flex;margin-top:0}}
@media (max-width:699px){.rw-problem [data-testid="problem-step"]{padding:16px!important}.rw-problem .rw-pstep-b{gap:10px}.rw-problem .wrap.wsx>div{gap:20px!important}}
.rw-cand{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;padding:10px 4px}
/* Problem page links added in the 2026-11 rework keep the 44px tap target: breadcrumb, heat chip, source and case links. */
.rw-problem nav.meta a,.rw-problem .chipline a.tag,.rw-problem .src a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.rw-problem .chipline a.tag{padding-top:0;padding-bottom:0}
/* Phones: the hero feature repeats the first written solution shown just below, so it gives way. */
@media (max-width:699px){.rw-ifeat{display:none}}

/* Round 3 (2026-11-03): disclosure marker on "适合与不适合", the step panel's problem list, sub line */
.rw-pfit summary{list-style:none;justify-content:space-between;gap:12px}
.rw-pfit summary::-webkit-details-marker{display:none}
.rw-pfit summary::after{content:"";flex:none;width:9px;height:9px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-3px);transition:transform .2s}
.rw-pfit[open] summary::after{transform:rotate(-135deg) translateY(-3px)}
.rw-pfit:not([open]){padding-top:8px;padding-bottom:8px}
.rw-sstarts{display:flex;flex-direction:column;gap:2px}
.rw-sstarts[hidden]{display:none}
.rw-sstarts p{margin:0}
.rw-sstarts-l a{display:flex;align-items:center;min-height:44px;border-top:1px solid var(--rw-color-border);font-weight:600;color:var(--rw-color-link)}
.rw-isub{color:var(--rw-color-text-secondary)}
@media (max-width:699px){.rw-sstarts-l a+a{display:none}}

/* Batch 5 (A14): each step is a details whose header row is the summary. Wider screens look as before
   (fold.js keeps them open and the header inert); phones fold steps 02-05 behind the header. */
.rw-pstep>summary{display:block;list-style:none;cursor:default}
.rw-pstep>summary::-webkit-details-marker{display:none}
.rw-pstep-b{display:flex;flex-direction:column;gap:12px;margin-top:12px}
@media (max-width:599px){
.rw-pstep>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--rw-touch-target);cursor:pointer}
.rw-pstep>summary::after{content:"";flex:none;width:9px;height:9px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-3px);transition:transform .2s}
.rw-pstep[open]>summary::after{transform:rotate(-135deg) translateY(-3px)}
}
/* B7: "谁来做" stacks on phones, the recommended entry service first. */
@media (max-width:599px){.rw-who{grid-template-columns:1fr}.rw-who>.rw-who-rec{order:-1}}
/* Section head inside .rw-icol sections (本季增长难题, 典型客户): kick, h2 and one line, like the other sections. */
.rw-icol-head{display:flex;flex-direction:column;gap:8px;min-width:0}
/* Overview panels: block heads step down to h3 under the section's h2. */
.rw-ihead h3{margin:0}

/* source: page-static.css */
/* Method, about and trust pages: layout helpers that replace the prototype's inline styles.
   Elementor elements carry only these class names, so every value lives here. */

/* Elementor's Atomic div block brings its own display, padding and min-width (two-class selector,
   loaded after the theme). On these pages every top-level section carries rw-static, and the
   prototype classes get their layout values back one step more specific, inside that scope only. */
.elementor .e-div-block-base.rw-static,.elementor .rw-static .e-div-block-base.e-con{min-width:0;padding:0}
.elementor .rw-static .e-div-block-base:is(.g2,.g3,.comp,.herog,.wsx,.consult){display:grid}
.elementor .rw-static .e-div-block-base:is(.why,.rw-col6,.rw-col8,.rw-col10,.rw-col12,.rw-col14,.rw-col16,.rw-col18,.rw-col28,.rw-col32){display:flex}
.elementor .e-div-block-base.rw-static.sec{padding:64px 0}
.elementor .rw-static .e-div-block-base.wrap{padding:0 48px}
.elementor .rw-static .e-div-block-base.why{padding:24px}
.elementor .rw-static .e-div-block-base.card{padding:18px}
.elementor .rw-static .e-div-block-base.card-lg{padding:22px}
.elementor .rw-static .e-div-block-base.comp{padding:16px}
.elementor .rw-static .e-div-block-base.consult{padding:20px 22px}
@media (max-width:760px){
.elementor .rw-static .e-div-block-base.why{padding:18px}
.elementor .rw-static .e-div-block-base.comp{padding:10px}
}
@media (max-width:599px){
.elementor .e-div-block-base.rw-static.sec{padding:32px 0}
.elementor .rw-static .e-div-block-base.wrap{padding:0 16px}
}

/* Hero bands */
.elementor .e-div-block-base.rw-static.rw-hero{padding-top:48px;padding-bottom:36px}
.elementor .e-div-block-base.rw-static.rw-hero-32{padding-top:48px;padding-bottom:32px}
.rw-static.rw-hero-line{border-bottom:1px solid var(--rw-color-border)}
.elementor .e-div-block-base.rw-static.rw-pt36{padding-top:36px}
.elementor .e-div-block-base.rw-static.rw-pt32{padding-top:32px}

/* Stacks and rows */
.rw-col6,.rw-col8,.rw-col10,.rw-col12,.rw-col14,.rw-col16,.rw-col18,.rw-col28,.rw-col32{display:flex;flex-direction:column;min-width:0}
.rw-col6{gap:6px}.rw-col8{gap:8px}.rw-col10{gap:10px}.rw-col12{gap:12px}.rw-col14{gap:14px}
.rw-col16{gap:16px}.rw-col18{gap:18px}.rw-col28{gap:28px}.rw-col32{gap:32px}
.rw-row10,.rw-row12{display:flex;flex-wrap:wrap}
.rw-row10{gap:10px}.rw-row12{gap:12px}
.rw-min0{min-width:0}
.rw-ai-center{align-items:center}
.rw-ai-start{align-items:start}
.rw-self-start{align-self:flex-start}
.rw-jstart{justify-self:start}
.rw-pill-center{justify-content:center;margin-top:8px}

/* Text */
.rw-m0{margin:0}
.rw-m4t{margin:4px 0 0}
.rw-m6t{margin:6px 0 0}
.rw-mt8{margin-top:8px}
.rw-c2{color:var(--rw-color-text-secondary)}
.rw-b{font-weight:700}
.rw-fs18{font-size:18px}
.rw-lead20{margin:0;font:700 20px/1.6 var(--font-ui-zh)}
.rw-lead18{margin:0;font:700 18px/1.5 var(--font-ui-zh)}
.rw-num20{font:700 20px var(--font-display)}
.rw-check{display:flex;gap:6px}

/* Method page */
.steprow .sn.sn-row{flex-direction:row;gap:10px;align-items:flex-start}
.steprow .sn-txt{display:flex;flex-direction:column;gap:2px}
.steprow .sn .sn-en{font:600 13px var(--font-display);color:var(--sc)}
.rw-tile-cell{display:flex;min-width:0}
.rw-tile-cell>.tile{flex:1}

/* Two- and three-column tables */
.rvr.rvr-3a{grid-template-columns:.8fr 1fr 1fr}
.rvr.rvr-terms{grid-template-columns:1fr 2.4fr}
.rvr.rvr-mr{grid-template-columns:1.3fr 1fr 1fr}
.rvr.rvr-legal{grid-template-columns:1.4fr 1fr 1.6fr}

/* About page */
.rw-avatar{border-radius:999px;width:56px;height:56px;font:800 20px var(--font-display)}
.rw-en{font-family:var(--font-display);letter-spacing:.02em}
.rw-tsc-card,.rw-entry{display:flex;flex-direction:column;gap:8px}
.rw-entry .ibox .upmark{width:24px;height:24px}
.rw-stat{display:flex;align-items:baseline;gap:6px;font-size:14px}
.rw-stat strong{color:var(--rw-color-action-primary)}
.rw-entry-link,.rw-tap{display:inline-flex;align-items:center;min-height:44px;margin-top:auto}
.rw-mails{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.rw-mails li{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rw-mails .meta{min-width:5em}

/* Click targets and legibility */
.rw-static .usp .uplink{min-height:44px}
.rw-static .toc a{display:flex;align-items:center;min-height:44px;padding:0}
.rw-static .rvr-legal strong a{display:inline-flex;align-items:center;min-height:44px}
.rw-static .dlchips .sbadge em{opacity:1}
/* Privacy policy and terms of use: long-form legal text */
.rw-legal{max-width:760px;line-height:1.8}
.rw-legal h2{margin:0 0 8px;scroll-margin-top:8px}
.rw-legal p{margin:0 0 12px}
.rw-legal ul,.rw-legal ol{margin:0 0 12px;padding-left:1.4em}
.rw-legal li{margin:0 0 6px}
.rw-legal li>ul{margin:6px 0 0}
.rw-legal .tblbox{margin:0 0 12px}
.rw-legal table{width:100%;min-width:520px;border-collapse:collapse;font-size:14px;line-height:1.6}
.rw-legal th,.rw-legal td{padding:10px 12px;border-bottom:1px solid var(--rw-color-border);text-align:left;vertical-align:top}
.rw-legal th{background:var(--rw-color-surface-subtle);font-weight:700}
.rw-legal tr:last-child td{border-bottom:0}
.rw-legal code{font-size:13px;overflow-wrap:anywhere}
.rw-legal .tag{margin:0 2px;vertical-align:baseline;line-height:1.4}
.rw-legal a{overflow-wrap:anywhere}
@media (max-width:599px){.rw-legal table{min-width:480px}}
/* Growth machine section on the method and About pages. */
.rw-gmsec .rw-icol{display:flex;flex-direction:column;gap:12px;min-width:0}
.rw-gmsec .rw-icol>h2{margin:0}
/* The compact growth machine sits centred in the full-width column, not against its left edge (D6). */
.rw-gmsec .gm-compact{align-self:center}
/* /loop/ links to the growth machine with one card instead of repeating its drawing (D8). */
.rw-gmsec .rw-gmcard{max-width:560px}

/* About, two-column sections (Jackie 2026-11-07): .rw-split.rw-split-wide (components.css) puts the
   drawing in the wider left column and .rw-split-fill stretches the cards on the right to its bottom.
   Here only the About touches: the growth machine drawing centred in its column, the method cards' link
   pinned to the card's foot, the belief cards' text centred in their taller boxes. */
.rw-gmsec .rw-split{margin-top:12px}
.rw-gmsec .rw-split>:first-child{align-self:center}
.rw-about-mcards .card,.rw-about-bcards .card{display:flex;flex-direction:column}
.rw-about-mcards .card .rw-entry-link{margin-top:auto;padding-top:12px}
.rw-about-bcards .card{justify-content:center}
@media (max-width:899px){.rw-about-bcards .card{justify-content:flex-start}}

/* About hero: Think, Solve, Change flywheel lights up once, in order (under 5s, so no pause control) */
@keyframes rw-tsc-on{from{opacity:.25}to{opacity:1}}
.tsc .tsc-n{animation:rw-tsc-on .6s var(--rw-ease-decelerate) both}
.tsc .tsc-n2{animation-delay:.5s}
.tsc .tsc-n3{animation-delay:1s}
@media (prefers-reduced-motion:reduce){.tsc .tsc-n{animation:none}}

/* Growth Machine method page: seven parts plus the engine card. */
.rw-part{display:flex;flex-direction:column;gap:6px;min-width:0}
.rw-part-engine{border-color:var(--rw-color-action-primary);color:inherit;text-decoration:none}
.rw-part-engine:hover{background:var(--rw-color-surface-info)}
.rw-tile-up{align-items:center}
.rw-tile-up .btn{width:100%;justify-content:center}
/* D9: the site's own next step is the one solid choice; Upskill Pro is a secondary, outlined button. */
.tile.rw-tile-pri,a.tile.rw-tile-pri:hover{background:var(--rw-color-action-primary);border-color:var(--rw-color-action-primary);color:var(--rw-color-on-action)}
a.tile.rw-tile-pri:hover{background:var(--rw-color-action-primary-hover)}
.tile.rw-tile-pri .rw-c2{color:var(--rw-color-on-action)}
.stats.rw-stats1{grid-template-columns:minmax(0,max-content)}

/* About: entity and naming rules fold behind one row on phones (assets/js/islands/fold.js). */
.rw-fold>summary{display:flex;align-items:center;justify-content:space-between;min-height:var(--rw-touch-target);padding:0 16px;border:1px solid var(--rw-color-border);border-radius:12px;background:var(--rw-color-surface);font-weight:700;cursor:pointer;list-style:none}
.rw-fold>summary::-webkit-details-marker{display:none}
.rw-fold>summary::after{content:"展开";font-weight:600;color:var(--rw-color-link)}
.rw-fold[open]>summary{margin-bottom:12px}
.rw-fold[open]>summary::after{content:"收起"}
@media (min-width:600px){.rw-fold>summary{display:none}}

/* About: partner cards. */
.rw-person{display:flex;flex-direction:column;gap:6px;min-width:0}
.rw-creds{margin:4px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px;color:var(--rw-color-text-secondary)}

/* D7 (batch 5): on phones a two-option table (.rvr-3a) keeps its two columns and its header row, the
   row label spanning both, so each value stays under its column name and 「同左」 still points left. */
@media (max-width:760px){
.rvt .rvr.rvr-3a{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:4px 12px!important}
.rvt .rvr.rvr-3a>strong{grid-column:1/-1}
.rvt .rvr.rvh.rvr-3a{display:grid!important;font-size:13px}
.rvt .rvr.rvh.rvr-3a>span:first-child{display:none}
}

/* D10 (batch 5): on phones a two-column legal table simply fits the screen; a wider one turns each
   row into a card, every value under its column name (data-label copies the header text), and its
   header row stays for screen readers only. */
@media (max-width:599px){
.rw-legal table{min-width:0}
.rw-legal .tblbox:has(th:nth-child(3)){overflow:visible;border:0;background:none}
.rw-legal table:has(th:nth-child(3)) :is(tbody,tr,td){display:block;width:100%}
.rw-legal table:has(th:nth-child(3)) thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.rw-legal table:has(th:nth-child(3)) tr{margin:0 0 10px;border:1px solid var(--rw-color-border);border-radius:12px;background:var(--rw-color-surface)}
.rw-legal table:has(th:nth-child(3)) td{padding:6px 12px;border-bottom:1px solid var(--rw-color-border)}
.rw-legal table:has(th:nth-child(3)) tr td:last-child{border-bottom:0}
.rw-legal table:has(th:nth-child(3)) td[data-label]::before{content:attr(data-label);display:block;font-size:12px;font-weight:700;line-height:1.6;color:var(--rw-color-text-secondary)}
}
/* The way back to the contents: phones only, held at the bottom of the screen above the tab bar
   while the legal text scrolls by (the desktop contents rail is sticky already). */
.rw-totoc{display:none}
@media (max-width:760px){
.elementor .rw-totoc{display:flex;justify-content:flex-end;position:sticky;bottom:calc(68px + env(safe-area-inset-bottom));z-index:10;pointer-events:none}
.rw-totoc a{pointer-events:auto;display:inline-flex;align-items:center;min-height:var(--rw-touch-target);padding:0 16px;border:1px solid var(--rw-color-border);border-radius:999px;background:var(--rw-color-surface);box-shadow:var(--rw-shadow-overlay);font:600 14px/1 var(--font-ui-zh);text-decoration:none}
}
#toc{scroll-margin-top:8px}
/* Once the contents rail sits above the text (one column), it scrolls away with the page instead of
   staying pinned behind the legal text. */
@media (max-width:900px){.rw-static .wsx>.sticky{position:static!important}}
/* About: the contact grid (hotline, mail, office with the operating entity). */
.rw-contact-grid .rw-tap{margin-top:0}

/* 四大增长能力 (Jackie 2026-11-08): each card has its own accent from the VI palette, a 5px rule on top,
   a large step number and its icon as a faint corner mark; it lifts on hover. */
.rw-entry{position:relative;overflow:hidden;--acc:var(--rw-blue);--acc-ink:var(--rw-color-action-primary);--acc-soft:var(--rw-soft-blue);border-top:var(--rw-border-accent-width) solid var(--acc);transition:transform .15s,box-shadow .15s}
.rw-entry[data-entry="community"]{--acc:var(--rw-green);--acc-ink:var(--rw-color-success);--acc-soft:var(--rw-soft-green)}
.rw-entry[data-entry="upskill"]{--acc:var(--rw-violet);--acc-ink:var(--rw-violet);--acc-soft:var(--rw-soft-violet)}
.rw-entry[data-entry="institute"]{--acc:var(--rw-orange);--acc-ink:var(--rw-color-warning);--acc-soft:var(--rw-soft-orange)}
.rw-entry-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.rw-entry .ibox{width:56px;height:56px;border-radius:16px;background:var(--acc-soft);color:var(--acc-ink)}
.rw-entry .ibox .ico{width:28px;height:28px}
.rw-entry .ibox .upmark{width:30px;height:30px}
.rw-entry-no{font:800 40px/1 var(--font-display);color:var(--acc-ink);letter-spacing:-.04em}
.rw-entry .rw-num20{color:var(--acc-ink)}
.rw-entry .rw-entry-link{color:var(--acc-ink);font-weight:700}
.rw-entry-mark{position:absolute;right:-18px;bottom:-18px;width:120px;height:120px;color:var(--acc);opacity:.08;pointer-events:none}
.rw-entry-mark .ico{width:100%;height:100%}
.rw-entry>*:not(.rw-entry-mark){position:relative}
@media (hover:hover) and (prefers-reduced-motion:no-preference){.rw-entry:hover{transform:translateY(-4px);box-shadow:var(--rw-shadow-card)}}

/* Partners (Jackie 2026-11-08): illustrated portrait on a soft panel, English name, role, facts. */
.rw-person{gap:8px;transition:transform .15s,box-shadow .15s}
.rw-portrait-box{display:block;margin:-4px -4px 8px;border-radius:14px;overflow:hidden;aspect-ratio:1/1;max-width:200px}
.rw-portrait{display:block;width:100%;height:100%}
.rw-person-n{font:800 22px/1.25 var(--font-display);letter-spacing:-.01em}
.rw-person .rw-b{color:var(--rw-color-action-primary)}
@media (hover:hover) and (prefers-reduced-motion:no-preference){.rw-person:hover{transform:translateY(-4px);box-shadow:var(--rw-shadow-card)}.rw-person:hover .rw-portrait{transform:scale(1.03)}}
.rw-portrait{transition:transform .2s}

/* source: page-workbench.css */
/* AI workbench page: the native start heading and intro sit in the right column beside the five-step
   rail, as in the prototype. The widget wrappers use display: contents so the island's rail and work
   area become items of the same grid; the start heading hides once a step or the pack is open. */

.elementor .e-div-block-base.rw-wbsec{padding:28px 0 56px;min-height:900px}
.elementor .rw-wbsec .e-div-block-base.e-con{min-width:0;padding:0}
.elementor .rw-wbsec .e-div-block-base.wrap.rw-wbgrid{padding:0 48px;max-width:1240px;display:grid;grid-template-columns:260px minmax(0,1fr);grid-template-areas:"rail hero" "rail lead" "rail main";grid-template-rows:auto auto 1fr;column-gap:24px;row-gap:18px;align-items:start}
.elementor .rw-wbsec .e-div-block-base.wrap.rw-wbgrid:has(.rw-wb:not([data-phase="start"])){grid-template-areas:"rail main";grid-template-rows:auto}
.rw-wbgrid:has(.rw-wb:not([data-phase="start"])) .rw-wb-hero{display:none}
.rw-wbgrid .rw-wb-widget,.rw-wbgrid .rw-wb-widget>.elementor-widget-container,.rw-wbgrid .rw-wb-widget .rw-widget,.rw-wbgrid .rw-wb{display:contents}
.rw-wbgrid .rw-wb-hero{grid-area:hero;margin:0}
.rw-wbgrid .rw-wb-lead{grid-area:lead;margin:0;color:var(--rw-color-text-secondary)}
.rw-wb-aside{grid-area:rail;grid-row:1/-1}
.rw-wb-railcard{display:flex;flex-direction:column;gap:8px}
.rw-wb-mini{align-items:center;gap:10px;padding:10px 14px}
.rw-wb-main{grid-area:main;min-width:0;display:flex;flex-direction:column;gap:18px}
.rw-wb-grow{flex:1}
.rw-wb .srail .statepill:empty{display:none}
@media (max-width:900px){
  .elementor .rw-wbsec .e-div-block-base.wrap.rw-wbgrid{grid-template-columns:minmax(0,1fr);grid-template-areas:"rail" "hero" "lead" "main";grid-template-rows:auto}
  .elementor .rw-wbsec .e-div-block-base.wrap.rw-wbgrid:has(.rw-wb:not([data-phase="start"])){grid-template-areas:"rail" "main"}
  .rw-wb-aside{grid-row:auto;position:static}
}
@media (max-width:599px){
  .elementor .rw-wbsec .e-div-block-base.wrap.rw-wbgrid{padding:0 16px}
  .elementor .e-div-block-base.rw-wbsec{min-height:0}
}

/* Status line read out by screen readers (aria-live); visually hidden. */
.rw-wb-status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* 44px targets for the small controls the prototype drew at 36px or less. */
.rw-wb .sugg,.rw-wb .lnk,.rw-wb button.tag{min-height:44px;min-width:44px;justify-content:center}
.rw-wb button.tag{border:1px solid currentColor;cursor:pointer;font:inherit;font-size:13px;padding:0 10px;display:inline-flex;align-items:center}
.rw-wb .judge .btn{min-height:44px}
.rw-wb .dom{width:100%}
.rw-wb .eadd{display:flex;gap:8px;flex-wrap:wrap}
.rw-wb .eadd .inp{flex:1 1 220px;min-width:0}
.rw-wb .erow .et{min-width:0;overflow-wrap:anywhere}
.rw-wb .youq{overflow-wrap:anywhere}
.rw-wb .rw-wb-composer{gap:12px}
.rw-wb .rw-wb-fld{max-width:420px}
.rw-wb .rw-wb-begin{align-self:flex-start;gap:8px}
.rw-wb .rw-wb-go{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.rw-wb .rw-wb-begin:disabled{background:var(--rw-color-surface-disabled);border-color:var(--rw-color-border-interactive);color:var(--rw-color-text-secondary);cursor:not-allowed}
.rw-wb .rw-wb-roles{margin-top:8px}
.rw-wb .rw-wb-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.rw-wb .rw-wb-headl{display:flex;gap:10px;align-items:center}
.rw-wb .rw-wb-headl h1{margin:0}
.rw-wb .rw-wb-headl .eb{margin:0;color:var(--sc)}
.rw-wb .rw-wb-headl h1:focus{outline:none}
.rw-wb .rw-wb-headl h1:focus-visible{outline:2px solid var(--rw-color-focus,var(--rw-color-action-primary));outline-offset:4px}
.rw-wb .rw-wb-sub{margin:0;color:var(--rw-color-text-secondary)}
.rw-wb .rw-wb-optrow{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center}
.rw-wb .rw-wb-metric{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;border-bottom:1px solid var(--rw-color-border);padding:8px 0}
.rw-wb .rw-wb-out{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}
.rw-wb .rw-wb-col{display:flex;flex-direction:column;gap:10px}
.rw-wb .rw-wb-col8{display:flex;flex-direction:column;gap:8px}
.rw-wb .rw-wb-packhead{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.rw-wb .rw-wb-packhead h1{margin:0}
.rw-wb .rw-wb-cover{margin:0;font:700 22px/1.5 var(--font-ui-zh)}
.rw-wb .brow{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;border-top:1px solid var(--rw-color-border);padding-top:8px}
.rw-wb .brow .eb{padding-top:3px}
.rw-wb .rw-wb-file{display:flex;justify-content:space-between;gap:8px;border-bottom:1px solid var(--rw-color-border);padding:6px 0}
.rw-wb .tile.rw-wb-tile{cursor:pointer;font:inherit;text-align:left}
.rw-wb .rw-wb-export{margin:0;white-space:pre-wrap;font:14px/1.8 var(--font-ui-zh);background:var(--rw-color-surface-subtle);padding:14px;border-radius:8px;overflow-wrap:anywhere}
.rw-wb .rw-wb-up{align-self:flex-start}
.rw-wb .wall .rw-wb-walltitle{margin:0;font:700 18px/1.5 var(--font-ui-zh);display:flex;gap:8px;align-items:center}
.rw-wb .wall .rw-wb-walltitle:focus{outline:none}
.rw-wb .wall .rw-wb-walltitle:focus-visible{outline:2px solid var(--rw-color-action-primary);outline-offset:4px}
.rw-wb .rw-wb-acts{display:flex;flex-wrap:wrap;gap:8px}
.rw-wb .rw-wb-notice p{margin:0}
.rw-wb .rw-wb-notice p:focus{outline:none}
.rw-wb .rw-wb-notice p:focus-visible{outline:2px solid var(--rw-color-action-primary);outline-offset:4px}
.rw-wb .rw-wb-consult{display:flex;flex-direction:column;gap:6px}
.rw-wb .rw-wb-consult .rw-wb-big{margin:0;font:700 18px/1.5 var(--font-ui-zh)}
@media (max-width:599px){
  .rw-wb .rw-wb-metric{grid-template-columns:1fr}
}
