/* How we work (2026-10-12): a custom ERP grows from one pain point to a complete system.
   The system map is filled shapes only (no connector lines); how.js lights tiles step by step. */

/* ---------- Growth walkthrough: steps on the left, a sticky system map on the right ---------- */
.gd{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:clamp(32px,5vw,88px);align-items:start}
.gd-steps{display:grid;gap:clamp(18px,3vw,40px);padding-bottom:12vh}
.gd-step{display:grid;grid-template-columns:auto 1fr;gap:6px 20px;padding:30px 30px 32px;border-radius:22px;background:var(--panel);border:1px solid var(--line-soft);min-height:clamp(260px,46vh,420px);align-content:center;transition:border-color .4s,background .4s,opacity .4s}
.gd-step__no{grid-row:1/span 3;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--cyan-soft);color:var(--cyan);font-size:15px;font-weight:650;transition:background .4s,color .4s}
.gd-step h3{font-size:clamp(22px,1.8vw,28px);font-weight:550;letter-spacing:-.02em;line-height:1.25}
.gd-step p{color:#cbd7dd;font-size:16.5px;line-height:1.65}
.gd-step .gd-eg{margin-top:4px;padding:12px 16px;border-radius:12px;background:rgba(102,217,239,.06);color:var(--muted);font-size:15px;line-height:1.6}
.gd-step .gd-eg b{color:var(--cyan);font-weight:600;margin-right:6px}
.gd.is-live .gd-step{opacity:.55}
.gd.is-live .gd-step.is-on{opacity:1;border-color:rgba(102,217,239,.4);background:linear-gradient(160deg,rgba(102,217,239,.1),var(--panel) 55%)}
.gd.is-live .gd-step.is-on .gd-step__no{background:var(--cyan);color:var(--ink)}

.gd-board{position:sticky;top:110px;padding:24px 24px 22px;border-radius:26px;background:linear-gradient(160deg,#0f2131,#08131c);border:1px solid var(--line-soft);box-shadow:0 50px 90px -60px rgba(0,0,0,.8)}
.gd-board__top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.gd-board__kicker{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.gd-board__stage{margin-top:6px;font-size:20px;font-weight:550;letter-spacing:-.01em}
.gd-board__count{text-align:right;font-size:13px;color:var(--muted)}
.gd-board__count b{display:block;font-size:40px;font-weight:600;line-height:1;color:var(--cyan);font-variant-numeric:tabular-nums}
.gd-group{margin-top:12px}
.gd-group>span{display:block;margin-bottom:8px;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.gd-tiles{display:flex;flex-wrap:wrap;gap:8px}
.gd-tile{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:12px;background:rgba(214,232,240,.05);color:rgba(214,232,240,.32);font-size:14px;font-weight:550;line-height:1.3;transition:background .5s var(--ease),color .5s,transform .5s var(--ease),opacity .5s}
.gd-tile .ic{font-size:16px;opacity:.6}
.gd-tile.is-on{background:rgba(102,217,239,.16);color:#e8f6f9;transform:translateY(-2px)}
.gd-tile.is-on .ic{color:var(--cyan);opacity:1}
.gd-tile.is-new{background:var(--cyan);color:var(--ink)}
.gd-tile.is-new .ic{color:var(--ink)}
.gd-tile--pain.is-on{background:rgba(229,166,72,.2);color:#f6dcae}
.gd-tile--pain.is-on .ic{color:#e5a648}
.gd-tile em{display:none;font-style:normal;font-size:11.5px;font-weight:600;letter-spacing:.06em;padding:2px 7px;border-radius:8px;background:rgba(214,232,240,.1);color:var(--muted)}
.gd-tile.is-gone{background:rgba(214,232,240,.04);color:rgba(214,232,240,.3);transform:none}
.gd-tile.is-gone em{display:inline}
.gd-tile.is-gone .ic{color:inherit;opacity:.5}
.gd-tile--wide{flex:1 1 100%;justify-content:center;padding:14px}
.gd-board__new{display:none}
.gd-board__new b{color:var(--cyan);font-weight:600;margin-right:6px}
.gd-board__note{margin-top:16px;font-size:13px;line-height:1.55;color:var(--dim)}
/* Without JS (or reduced motion) the board simply shows the finished system. */
.gd:not(.is-live) .gd-tile{background:rgba(102,217,239,.14);color:#e8f6f9}
.gd:not(.is-live) .gd-tile .ic{color:var(--cyan);opacity:1}
.gd:not(.is-live) .gd-tile--pain,.gd:not(.is-live) .gd-tile--gone{background:rgba(214,232,240,.04);color:rgba(214,232,240,.3)}
.gd:not(.is-live) .gd-tile--pain em,.gd:not(.is-live) .gd-tile--gone em{display:inline}

/* ---------- Five systems ---------- */
.cases5{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.case5{display:flex;flex-direction:column;padding:30px;border-radius:22px;background:#fff;box-shadow:0 18px 50px -34px rgba(13,24,32,.35)}
.case5:first-child{grid-column:1/-1}
.case5__tag{display:flex;align-items:center;gap:12px;font-size:12.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan-deep)}
.case5__tag .ic{font-size:24px}
.case5 h3{margin-top:14px;font-size:clamp(22px,1.8vw,28px);font-weight:550;letter-spacing:-.02em;line-height:1.25;color:var(--paper-ink)}
.case5__from{margin-top:14px;font-size:16px;line-height:1.65;color:var(--paper-muted)}
.case5__from b,.case5__lesson b{display:block;margin-bottom:4px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-ink)}
.case5__path{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;counter-reset:cp}
.case5__path li{display:inline-flex;align-items:center;gap:8px;padding:8px 13px 8px 9px;border-radius:12px;background:#edf3f4;font-size:14.5px;font-weight:550;line-height:1.35;color:#173d47;counter-increment:cp}
.case5__path li::before{content:counter(cp);display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:50%;background:var(--cyan-deep);color:#fff;font-size:11.5px;font-weight:700}
.case5__lesson{margin-top:auto;padding-top:20px;font-size:16px;line-height:1.6;color:var(--paper-ink)}
.cases5-note{margin-top:22px;font-size:13.5px;line-height:1.6;color:var(--paper-muted)}

/* ---------- Rhythm ---------- */
.rhythm{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:clamp(40px,4vw,64px)}
.rhythm li{display:flex;align-items:center;gap:16px;padding:22px 24px;border-radius:18px;background:#fff;font-size:17px;font-weight:550;line-height:1.4;color:var(--paper-ink)}
.rhythm .ic{flex:none;font-size:28px;color:var(--cyan-deep)}

@media(max-width:1024px){
  .gd{grid-template-columns:1fr}
  .gd-board{position:sticky;top:76px;z-index:2;padding:14px 16px;border-radius:16px;order:-1}
  .gd-board__top{margin-bottom:10px;align-items:center}
  .gd-board__stage{margin-top:2px;font-size:17px}
  .gd-board__count{display:flex;align-items:baseline;gap:6px}
  .gd-board__count b{font-size:28px}
  /* Compact map: every module is a small square; the line below names what this step added. */
  .gd-group{display:contents}
  .gd-group>span,.gd-board__note{display:none}
  .gd-board{display:flex;flex-wrap:wrap;gap:6px}
  .gd-board__top{flex:1 1 100%}
  .gd-tiles{display:contents}
  .gd-tile,.gd-tile--wide{flex:none;width:16px;height:16px;padding:0;border-radius:5px;font-size:0;gap:0}
  .gd-tile .ic,.gd-tile em{display:none!important}
  .gd-tile.is-on{transform:none}
  .gd-board__new{display:block!important;flex:1 1 100%;margin-top:6px;font-size:14px;line-height:1.5;color:#cfe6eb}
  .gd-step{min-height:0;padding:24px 22px}
  .cases5,.rhythm{grid-template-columns:1fr}
}
@media(max-width:720px){
  .gd-step p,.gd-step .gd-eg,.case5__from,.case5__lesson{font-size:16px}
  .case5{padding:24px}
  .case5__path li{font-size:15px}
}
html[lang^=zh] :is(.gd-step p,.case5 p,.case5__path li){word-break:normal}
@media(prefers-reduced-motion:reduce){.gd-step,.gd-tile{transition:none}}

/* Traditional ERP vs custom ERP (A-ERP): a three-column table on the deep section; stays a table on phones. */
.erp-vs{margin:0}
.erp-vs__table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;border:1px solid var(--line-soft);border-radius:22px;overflow:hidden;background:var(--panel);text-align:left}
.erp-vs__label{width:20%}
.erp-vs__table th,.erp-vs__table td{padding:20px 24px;vertical-align:top;border-bottom:1px solid var(--line-soft);font-size:16px;line-height:1.6;overflow-wrap:anywhere}
.erp-vs__table thead th{padding-block:24px;font-size:clamp(18px,1.5vw,22px);font-weight:600;letter-spacing:-.015em;color:var(--white)}
.erp-vs__table thead th:first-child{vertical-align:bottom;font-size:13px;font-weight:500;letter-spacing:0;color:var(--muted)}
.erp-vs__table tbody th{font-size:14.5px;font-weight:600;color:#dbe4e8}
.erp-vs__table td{color:var(--muted)}
.erp-vs__table td:last-child{background:rgba(102,217,239,.07);color:#e3f3f7}
.erp-vs__table thead .erp-vs__aerp{background:rgba(102,217,239,.15);color:var(--cyan);box-shadow:inset 0 3px 0 var(--cyan)}
.erp-vs__table tbody tr:last-child>*{border-bottom:0}
.erp-vs figcaption{margin-top:16px;max-width:780px;font-size:13px;line-height:1.6;color:var(--dim)}
@media(max-width:720px){
  .erp-vs__label{width:26%}
  .erp-vs__table{border-radius:16px}
  .erp-vs__table th,.erp-vs__table td{padding:14px 10px;font-size:13.5px;line-height:1.55}
  .erp-vs__table thead th{padding-block:16px;font-size:15px}
  .erp-vs__table thead th:first-child,.erp-vs__table tbody th{font-size:12.5px}
}

/* ---------- Custom services from the pain point (moved from the homepage 2026-10-21) ----------
   Three steps (pain point → build backwards → extend), then one card per build: the pain in the client's words,
   what we build, how it extends, and which of the three advantages it serves (colour-coded, see .goal). */
.goal--edge,.pain--edge{--goal:#f2bd5c;--goal-bg:rgba(242,189,92,.13)}
.goal--eff,.pain--eff{--goal:#66d9ef;--goal-bg:rgba(102,217,239,.13)}
.goal--grow,.pain--grow{--goal:#7ee2ab;--goal-bg:rgba(126,226,171,.13)}
.goal{display:inline-flex;align-items:center;gap:7px;padding:5px 11px 5px 9px;border-radius:30px;background:var(--goal-bg);color:var(--goal);font-size:13px;font-weight:650;line-height:1.35}
.goal::before{content:'';width:7px;height:7px;flex:none;border-radius:50%;background:currentColor}
.pains{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,1.3vw,18px)}
.pain{display:flex}
.pain>a{flex:1;display:flex;flex-direction:column;overflow:hidden;border-radius:22px;border:1px solid var(--line-soft);background:var(--panel);transition:transform .5s var(--ease),border-color .3s}
.pain__q{display:block;padding:22px 24px 20px;background:rgba(214,232,240,.045);font-size:15.5px;line-height:1.55;color:#dbe5e9}
.pain__q em{display:block;margin-bottom:8px;font-style:normal;font-size:12px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.pain__build{display:flex;align-items:center;gap:14px;padding:22px 24px 0}
.pain__ico{width:46px;height:46px;display:grid;place-items:center;flex:none;border-radius:13px;background:var(--goal-bg);color:var(--goal);font-size:23px}
.pain strong{font-size:19px;font-weight:600;letter-spacing:-.015em;line-height:1.3}
.pain__txt{padding:12px 24px 0;font-size:15px;line-height:1.6;color:var(--muted)}
.pain__ext{display:block;margin:16px 24px 0;padding:12px 14px;border-radius:12px;background:var(--goal-bg);font-size:14px;line-height:1.5;color:#dbe5e9}
.pain__ext b{display:block;margin-bottom:2px;font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--goal)}
.pain__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding:18px 24px 22px}
.pain__foot>.ic{font-size:18px;color:var(--goal);transition:transform .35s var(--ease)}
html[lang^=zh] .pain__q em,html[lang^=zh] .pain__ext b{letter-spacing:.06em}
.pain--ask>a{padding:26px 24px 24px;border-color:rgba(102,217,239,.35);background:linear-gradient(160deg,rgba(102,217,239,.16),rgba(102,217,239,.02) 60%),var(--panel)}
.pain--ask .pain__ico{width:52px;height:52px;background:var(--cyan);color:var(--ink);font-size:26px}
.pain--ask strong{margin-top:22px;font-size:clamp(21px,1.6vw,25px);letter-spacing:-.02em}
.pain--ask .pain__txt{padding:10px 0 24px;font-size:15.5px}
.pain--ask .btn{margin-top:auto;align-self:flex-start}
/* Line the rows up across each row of cards (pain, build, text, extension, footer); the sixth track is the gap. */
@media(min-width:721px){
  .pains{row-gap:0;grid-auto-rows:auto auto auto auto auto clamp(12px,1.3vw,18px)}
  .pain{grid-row:span 6;display:grid;grid-template-rows:subgrid}
  .pain>a{grid-row:1/6;display:grid;grid-template-rows:subgrid}
  .pain--ask>a{display:flex}
}
@media(hover:hover){.pain>a:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--goal,var(--cyan)) 55%,transparent)}.pain>a:hover .pain__foot>.ic{transform:translateX(5px)}}

/* ---------- Custom ERP, the byproduct: demo film beside the modules it grows into ---------- */
.erp-split{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(28px,4.4vw,72px);align-items:center}
.erp-split__visual{margin:0}
.erp-split__visual svg,.erp-film{display:block;width:100%;height:auto;aspect-ratio:16/10;background:#0b1a2a;border-radius:26px;box-shadow:0 60px 100px -60px rgba(7,13,19,.75),0 24px 40px -30px rgba(7,13,19,.4)}
.erp-split__visual figcaption{margin-top:14px;font-size:13px;line-height:1.6;color:var(--paper-muted)}
.erp-mods{display:grid}
.erp-mods li{display:flex;align-items:flex-start;gap:18px;padding:16px 0;border-bottom:1px solid var(--paper-line)}
.erp-mods li:first-child{padding-top:0}
.erp-mods .ic{flex:none;font-size:26px;color:var(--cyan-deep);margin-top:2px}
.erp-mods h3{font-size:19px;font-weight:600;line-height:1.3;letter-spacing:-.01em}
.erp-mods p{margin-top:4px;font-size:15.5px;line-height:1.55;color:var(--paper-muted)}
.erp-split__cta{display:flex;flex-wrap:wrap;gap:12px 14px;margin-top:28px}
.erp-split__more{margin-top:22px}
.btn--line{background:transparent;color:var(--paper-ink);border-color:rgba(13,24,32,.3)}
.btn--line:hover{background:var(--paper-ink);border-color:var(--paper-ink);color:var(--white)}
@media(max-width:1100px){
  .pains{grid-template-columns:repeat(2,minmax(0,1fr))}
  .erp-split{grid-template-columns:1fr}
  .erp-split__visual{max-width:820px}
}
@media(max-width:720px){
  .pains{grid-template-columns:1fr}
  .pain__q,.pain__txt,.pain--ask .pain__txt{font-size:16px}
  .pain__ext{font-size:15px}
  .pain__q em,.pain__ext b,.goal{font-size:13.5px}
  .erp-mods p{font-size:16px;line-height:1.6}
  .erp-split__visual figcaption{font-size:14px}
  .erp-split__cta .btn{width:100%}
}
@media(max-width:600px){
  .erp-split__visual svg,.erp-film{border-radius:16px}
}

/* ---------- Value proposition: what the partnership brings, above the pain-point cards ---------- */
.vp-bring{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:clamp(40px,4.5vw,64px)}
.vp-bring li{display:flex;align-items:flex-start;gap:18px;padding:26px 28px;border-radius:18px;border:1px solid var(--line-soft);background:var(--panel)}
.vp-bring .ic{flex:none;font-size:30px;color:var(--cyan)}
.vp-bring h3{font-size:20px;font-weight:550;line-height:1.3}
.vp-bring p{margin-top:6px;font-size:15px;line-height:1.55;color:var(--muted)}
.pains-intro{margin-bottom:18px;font-size:13px;font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
html[lang^=zh] .pains-intro{letter-spacing:.06em}
@media(max-width:900px){.vp-bring{grid-template-columns:1fr}}
@media(max-width:720px){.vp-bring p{font-size:16px;line-height:1.6}.pains-intro{font-size:13.5px}}
@media(max-width:600px){.vp-bring li{padding:22px}}
