/* =========================================================
   ZGSI — Industry Intelligence
   Visual system: industrial dossier / research lab
   ========================================================= */

:root{
  --bg:#0a0b0d;
  --bg-2:#0e1013;
  --panel:#121418;
  --panel-2:#171a1f;
  --ink:#ece8df;
  --ink-2:#c8c3b7;
  --muted:#8c8f94;
  --muted-2:#61656b;
  --line:rgba(236,232,223,.10);
  --line-strong:rgba(236,232,223,.19);
  --accent:#e28a3f;
  --accent-bright:#f0a45c;
  --accent-ink:#1b1208;
  --accent-soft:rgba(226,138,63,.11);
  --sage:#8fae9b;
  --sage-soft:rgba(143,174,155,.10);
  --display:"Songti SC","Noto Serif SC","Source Han Serif SC","STSong","SimSun",serif;
  --body:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;
  --mono:"SF Mono","JetBrains Mono","IBM Plex Mono","Menlo","Consolas",monospace;
  --max:1240px;
  --gutter:clamp(20px,4vw,56px);
  --ease:cubic-bezier(.22,.68,.16,1);
  --header-h:72px;
}

*,*::before,*::after{box-sizing:border-box}
html{
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--header-h) + 24px);
  -webkit-text-size-adjust:100%;
}
body{
  margin:0;
  min-height:100vh;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--body);
  font-size:16px;
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
p,h1,h2,h3,h4,figure{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
::selection{background:var(--accent);color:var(--accent-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-3;
  pointer-events:none;
  background:
    radial-gradient(900px 620px at 78% -8%, rgba(226,138,63,.075), transparent 62%),
    radial-gradient(760px 560px at -4% 28%, rgba(143,174,155,.045), transparent 60%),
    radial-gradient(700px 460px at 50% 112%, rgba(226,138,63,.035), transparent 66%);
}
body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background-image:
    linear-gradient(rgba(236,232,223,.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(236,232,223,.03) 1px, transparent 1px);
  background-size:72px 72px;
  -webkit-mask-image:radial-gradient(ellipse at 50% 0%, #000 0%, rgba(0,0,0,.62) 46%, transparent 86%);
  mask-image:radial-gradient(ellipse at 50% 0%, #000 0%, rgba(0,0,0,.62) 46%, transparent 86%);
}
.grain{
  position:fixed;
  inset:0;
  z-index:9999;
  pointer-events:none;
  opacity:.028;
  mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
}

.wrap{width:min(var(--max),100% - var(--gutter) * 2);margin-inline:auto}
.section{
  position:relative;
  padding:clamp(72px,9vw,132px) 0;
  border-top:1px solid var(--line);
}
.section--tight{padding:clamp(52px,6vw,84px) 0}
.section--flush{border-top:0}
.skip-link{
  position:absolute;
  left:16px;
  top:-60px;
  z-index:200;
  padding:10px 16px;
  background:var(--accent);
  color:var(--accent-ink);
  font-size:13px;
  font-weight:600;
  transition:top .2s;
}
.skip-link:focus{top:12px}

/* ---------- scroll progress ---------- */
.scroll-progress{
  position:fixed;
  top:0;
  left:0;
  right:0;
  height:2px;
  z-index:120;
  background:var(--accent);
  transform:scaleX(0);
  transform-origin:0 50%;
  will-change:transform;
}

/* ---------- header ---------- */
.site-header{
  position:sticky;
  top:0;
  z-index:100;
  background:rgba(10,11,13,.76);
  border-bottom:1px solid var(--line);
  -webkit-backdrop-filter:blur(16px);
  backdrop-filter:blur(16px);
}
.header-inner{
  height:var(--header-h);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.brand{display:inline-flex;align-items:center;gap:12px;flex:0 0 auto}
.brand-mark{width:34px;height:34px;color:var(--ink);transition:transform .3s var(--ease)}
.brand:hover .brand-mark{transform:rotate(-4deg)}
.brand-text{display:flex;flex-direction:column;line-height:1.05}
.brand-name{font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:.18em}
.brand-sub{margin-top:4px;font-size:9px;letter-spacing:.3em;color:var(--muted);white-space:nowrap}
.nav{display:flex;align-items:center;gap:2px}
.nav a{
  position:relative;
  padding:9px 13px;
  font-size:13px;
  color:var(--muted);
  transition:color .2s,background .2s;
}
.nav a:hover{color:var(--ink);background:rgba(236,232,223,.045)}
.nav a[aria-current="page"]{color:var(--ink)}
.nav a[aria-current="page"]::after{
  content:"";
  position:absolute;
  left:13px;
  right:13px;
  bottom:2px;
  height:1px;
  background:var(--accent);
}
.header-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.nav-toggle{
  display:none;
  width:40px;
  height:40px;
  border:1px solid var(--line-strong);
  position:relative;
}
.nav-toggle span{
  position:absolute;
  left:11px;
  right:11px;
  height:1px;
  background:var(--ink);
  transition:transform .25s var(--ease),top .25s var(--ease);
}
.nav-toggle span:first-child{top:16px}
.nav-toggle span:last-child{top:23px}
.nav-toggle[aria-expanded="true"] span:first-child{top:20px;transform:rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:last-child{top:20px;transform:rotate(-45deg)}
.btn.nav-cta-mobile{display:none}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:12px 20px;
  border:1px solid var(--line-strong);
  border-radius:2px;
  font-size:13px;
  font-weight:600;
  letter-spacing:.02em;
  line-height:1.4;
  transition:background .2s,color .2s,border-color .2s,transform .2s;
}
.btn:hover{transform:translateY(-2px)}
.btn .arrow{transition:transform .2s var(--ease)}
.btn:hover .arrow{transform:translate(2px,-2px)}
.btn--primary{
  background:var(--accent);
  border-color:var(--accent);
  color:var(--accent-ink);
  box-shadow:0 8px 28px rgba(226,138,63,.18);
}
.btn--primary:hover{background:var(--accent-bright);border-color:var(--accent-bright)}
.btn--ghost{color:var(--ink);background:rgba(236,232,223,.02)}
.btn--ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn--small{padding:9px 14px;font-size:12px}
.btn--large{padding:15px 26px;font-size:14px}
.btn-row{display:flex;flex-wrap:wrap;gap:12px}

/* ---------- type ---------- */
.kicker{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.18em;
  color:var(--accent);
  text-transform:uppercase;
}
.kicker::before{content:"";width:22px;height:1px;background:currentColor}
.h2{
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(34px,4.6vw,62px);
  line-height:1.1;
  letter-spacing:-.03em;
  margin-top:16px;
  text-wrap:balance;
}
.h2 .accent{color:var(--accent)}
.h3{
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(24px,2.6vw,34px);
  line-height:1.25;
  letter-spacing:-.02em;
}
.lead{color:var(--ink-2);font-size:clamp(15px,1.35vw,17px);line-height:1.95}
.small{font-size:12.5px;color:var(--muted);line-height:1.75}
.mono{font-family:var(--mono)}
.section-head{
  display:grid;
  grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  gap:clamp(24px,4vw,64px);
  align-items:end;
  margin-bottom:clamp(36px,5vw,64px);
}
.section-head .lead{max-width:560px;justify-self:end}
.section-head--left{grid-template-columns:1fr}
.section-head--left .lead{justify-self:start;margin-top:18px}

/* ---------- hero ---------- */
.hero{padding:clamp(56px,8vw,112px) 0 clamp(48px,6vw,88px);position:relative}
.hero-grid{
  display:grid;
  grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr);
  gap:clamp(40px,6vw,84px);
  align-items:center;
}
.hero h1{
  margin-top:24px;
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(48px,7vw,102px);
  line-height:1.04;
  letter-spacing:-.03em;
  text-wrap:balance;
}
.hero h1 .accent{color:var(--accent)}
.hero-lead{
  max-width:580px;
  margin-top:28px;
  color:var(--ink-2);
  font-size:clamp(15px,1.45vw,18px);
  line-height:1.95;
}
.hero-actions{margin-top:36px}
.hero-domains{
  display:flex;
  flex-wrap:wrap;
  gap:0;
  margin-top:46px;
  padding-top:16px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.16em;
  color:var(--muted);
}
.hero-domains span{padding-right:18px;margin-right:18px;border-right:1px solid var(--line)}
.hero-domains span:last-child{border-right:0;padding-right:0;margin-right:0}

/* ---------- knowledge trace panel ---------- */
.trace{
  position:relative;
  padding:22px;
  border:1px solid var(--line-strong);
  background:linear-gradient(158deg,rgba(236,232,223,.055),rgba(236,232,223,.012));
  box-shadow:0 30px 90px rgba(0,0,0,.36);
  overflow:hidden;
}
.trace::before,.trace::after{
  content:"";
  position:absolute;
  width:11px;
  height:11px;
  border-color:var(--accent);
  border-style:solid;
  opacity:.75;
}
.trace::before{top:-1px;left:-1px;border-width:1px 0 0 1px}
.trace::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}
.trace .scan{
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(226,138,63,.55),transparent);
  opacity:.55;
  animation:scan 7s linear infinite;
}
@keyframes scan{
  0%{top:0}
  100%{top:100%}
}
.trace-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-bottom:16px;
  border-bottom:1px solid var(--line);
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:.14em;
  color:var(--muted);
}
.trace-live{display:inline-flex;align-items:center;gap:6px;color:var(--sage);white-space:nowrap}
.trace-live::before{
  content:"";
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--sage);
  box-shadow:0 0 10px var(--sage);
  animation:pulse 2.6s ease-in-out infinite;
}
@keyframes pulse{
  0%,100%{opacity:1;transform:scale(1)}
  50%{opacity:.45;transform:scale(.8)}
}
.trace-label--gap{margin-top:18px}
.trace-label{
  display:block;
  margin-bottom:8px;
  font-family:var(--mono);
  font-size:8px;
  letter-spacing:.18em;
  color:var(--muted-2);
}
.trace-query{padding:18px 0 16px;border-bottom:1px solid var(--line)}
.trace-query p{font-size:15px;line-height:1.7;color:var(--ink);font-weight:600}
.trace-answer{padding:16px 0 0}
.trace-answer p{font-size:13px;line-height:1.9;color:var(--muted)}
.trace-answer strong{color:var(--ink);font-weight:600}
.trace-cites{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.cite{
  display:inline-flex;
  align-items:center;
  padding:4px 8px;
  border:1px solid rgba(143,174,155,.28);
  background:var(--sage-soft);
  color:var(--sage);
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:.04em;
  line-height:1.5;
}
.trace-meta{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:8px;
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:8px;
  letter-spacing:.12em;
  color:var(--muted-2);
}

/* ---------- ticker ---------- */
.ticker{
  position:relative;
  overflow:hidden;
  padding:13px 0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:rgba(236,232,223,.014);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
}
.ticker-track{display:flex;width:max-content;animation:ticker 48s linear infinite}
.ticker-item{
  padding:0 22px;
  border-right:1px solid var(--line);
  font-family:var(--mono);
  font-size:9.5px;
  letter-spacing:.15em;
  color:var(--muted);
  white-space:nowrap;
}
.ticker-item b{color:var(--accent);font-weight:500}
@keyframes ticker{
  to{transform:translateX(-50%)}
}

/* ---------- gap / numbered grid ---------- */
.gap-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
}
.gap-item{position:relative;background:var(--bg-2);padding:clamp(22px,3vw,30px);min-height:210px}
.gap-item::after{
  content:"";
  position:absolute;
  right:14px;
  top:14px;
  width:6px;
  height:6px;
  border-top:1px solid var(--line-strong);
  border-right:1px solid var(--line-strong);
}
.gap-num{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--accent)}
.gap-item h3{font-size:18px;font-weight:600;margin:18px 0 10px}
.gap-item p{font-size:13.5px;line-height:1.85;color:var(--muted)}
.gap-close{
  margin-top:28px;
  font-family:var(--display);
  font-size:clamp(20px,2.2vw,28px);
  color:var(--ink-2);
  letter-spacing:-.02em;
}
.gap-close span{color:var(--accent)}

/* ---------- stack ---------- */
.stack-grid{
  display:grid;
  grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);
  gap:clamp(36px,6vw,80px);
  align-items:start;
}
.stack-aside{position:sticky;top:calc(var(--header-h) + 32px)}
.stack-aside .lead{margin-top:22px}
.stack-aside .note{
  margin-top:28px;
  padding-top:18px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:10px;
  line-height:1.9;
  letter-spacing:.06em;
  color:var(--muted-2);
}
.stack{display:flex;flex-direction:column;gap:8px}
.layer{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto;
  gap:18px;
  align-items:start;
  padding:22px;
  border:1px solid var(--line);
  background:var(--panel);
  transition:transform .25s var(--ease),border-color .25s,background .25s;
}
.layer:hover{
  transform:translateX(4px);
  border-color:rgba(226,138,63,.38);
  background:var(--panel-2);
}
.layer-no{
  padding-top:3px;
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.1em;
  color:var(--muted-2);
}
.layer h3{font-size:16px;font-weight:600;letter-spacing:.01em}
.layer h3 span{color:var(--muted);font-family:var(--mono);font-size:9px;letter-spacing:.12em;font-weight:400;margin-left:10px}
.layer p{margin-top:7px;font-size:13px;line-height:1.8;color:var(--muted)}
.layer-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px}
.layer-tag{
  padding:3px 7px;
  border:1px solid var(--line);
  font-family:var(--mono);
  font-size:8.5px;
  letter-spacing:.08em;
  color:var(--muted);
  line-height:1.5;
}
.layer-mark{
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:.1em;
  color:var(--accent);
  white-space:nowrap;
  padding-top:4px;
}

/* ---------- flagship / demo ---------- */
.flagship-grid{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(36px,6vw,80px);
  align-items:start;
}
.feature-list{margin-top:30px;border-top:1px solid var(--line)}
.feature-list li{
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  gap:12px;
  padding:16px 0;
  border-bottom:1px solid var(--line);
  font-size:14px;
  line-height:1.75;
  color:var(--ink-2);
}
.feature-list li::before{content:"+";font-family:var(--mono);color:var(--accent);line-height:1.6}
.metrics{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  margin-top:30px;
  border:1px solid var(--line);
  background:var(--line);
}
.metric{background:var(--bg-2);padding:18px}
.metric b{
  display:block;
  font-family:var(--display);
  font-size:clamp(26px,2.6vw,34px);
  font-weight:600;
  line-height:1.1;
  color:var(--ink);
}
.metric span{
  display:block;
  margin-top:8px;
  font-family:var(--mono);
  font-size:8.5px;
  letter-spacing:.12em;
  color:var(--muted-2);
}
.demo{
  position:relative;
  border:1px solid var(--line-strong);
  background:linear-gradient(180deg,var(--panel-2),var(--panel));
  box-shadow:0 26px 80px rgba(0,0,0,.28);
}
.demo::before{
  content:"";
  position:absolute;
  top:-1px;
  left:-1px;
  width:10px;
  height:10px;
  border-top:1px solid var(--accent);
  border-left:1px solid var(--accent);
  opacity:.8;
}
.demo-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:15px 20px;
  border-bottom:1px solid var(--line);
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:.14em;
  color:var(--muted);
}
.demo-head .trace-live{font-size:8px}
.demo-tabs{display:flex;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.demo-tabs::-webkit-scrollbar{display:none}
.demo-tab{
  flex:1 0 auto;
  padding:14px 16px;
  border-right:1px solid var(--line);
  font-size:12px;
  line-height:1.5;
  text-align:left;
  color:var(--muted);
  white-space:nowrap;
  transition:color .2s,background .2s;
}
.demo-tab:last-child{border-right:0}
.demo-tab:hover{color:var(--ink);background:rgba(236,232,223,.03)}
.demo-tab[aria-selected="true"]{
  color:var(--ink);
  background:rgba(236,232,223,.045);
  box-shadow:inset 0 -2px 0 var(--accent);
}
.demo-body{padding:24px 22px 22px;min-height:286px}
.demo-panel[hidden]{display:none}
.demo-q{font-size:15px;line-height:1.7;font-weight:600;color:var(--ink)}
.demo-a{margin-top:16px;font-size:13px;line-height:1.95;color:var(--muted)}
.demo-a strong{color:var(--ink);font-weight:600}
.demo-cites{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.demo-foot{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:10px;
  padding:12px 20px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:8px;
  letter-spacing:.1em;
  color:var(--muted-2);
}

/* ---------- industries ---------- */
.industry-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  border:1px solid var(--line);
  background:var(--line);
}
.industry{
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  gap:28px;
  min-height:132px;
  padding:22px;
  background:var(--bg-2);
  transition:background .25s;
}
.industry:hover{background:var(--panel-2)}
.industry h3{font-size:16px;font-weight:600}
.industry p{margin-top:6px;font-size:12px;color:var(--muted);line-height:1.7}
.industry-status{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:var(--mono);
  font-size:8.5px;
  letter-spacing:.12em;
  color:var(--muted-2);
}
.industry-status::before{content:"";width:5px;height:5px;background:currentColor;border-radius:50%}
.industry--live .industry-status{color:var(--accent)}
.industry--next .industry-status{color:var(--sage)}
.process{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:clamp(16px,3vw,32px);
  margin-top:clamp(36px,5vw,56px);
  counter-reset:step;
}
.process-step{padding-top:18px;border-top:1px solid var(--line-strong)}
.process-step::before{
  counter-increment:step;
  content:"0" counter(step);
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.12em;
  color:var(--accent);
}
.process-step h3{margin:10px 0 6px;font-size:15px;font-weight:600}
.process-step p{font-size:12.5px;line-height:1.8;color:var(--muted)}

/* ---------- principles / quote ---------- */
.principles{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:1px;
  border:1px solid var(--line);
  background:var(--line);
}
.principle{background:var(--bg-2);padding:clamp(22px,3vw,30px)}
.principle h3{font-size:16px;font-weight:600;margin-bottom:8px}
.principle p{font-size:13px;line-height:1.85;color:var(--muted)}
.quote{
  margin-top:clamp(32px,4vw,48px);
  padding:clamp(26px,4vw,42px);
  border-left:2px solid var(--accent);
  background:linear-gradient(90deg,var(--accent-soft),transparent 72%);
  font-family:var(--display);
  font-size:clamp(22px,2.6vw,34px);
  line-height:1.55;
  letter-spacing:-.02em;
  color:var(--ink);
}
.quote span{color:var(--accent)}

/* ---------- contact band ---------- */
.contact-band{
  display:grid;
  grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);
  gap:clamp(28px,4vw,56px);
  align-items:end;
}
.contact-band .lead{max-width:580px;margin-top:20px}
.contact-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}

/* ---------- footer ---------- */
.site-footer{
  position:relative;
  padding:56px 0 30px;
  border-top:1px solid var(--line);
  background:rgba(0,0,0,.18);
}
.footer-grid{
  display:grid;
  grid-template-columns:1.5fr repeat(3,minmax(0,.55fr));
  gap:clamp(28px,4vw,56px);
}
.footer-brand .brand{margin-bottom:16px}
.footer-brand p{max-width:320px;font-size:12.5px;line-height:1.8;color:var(--muted)}
.footer-col h4{
  margin-bottom:14px;
  font-family:var(--mono);
  font-size:9px;
  font-weight:500;
  letter-spacing:.16em;
  color:var(--muted-2);
}
.footer-col a{display:block;padding:4px 0;font-size:12.5px;color:var(--muted);transition:color .2s}
.footer-col a:hover{color:var(--accent)}
.footer-legal{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:12px;
  margin-top:44px;
  padding-top:18px;
  border-top:1px solid var(--line);
  font-size:10.5px;
  line-height:1.8;
  color:var(--muted-2);
}
.footer-legal a{color:var(--muted-2);display:inline-flex;align-items:center;gap:5px}
.footer-legal a:hover{color:var(--accent)}
.footer-legal img{width:12px;height:13px;opacity:.8}
.footer-legal .sep{margin:0 8px;opacity:.45}

/* ---------- subpage hero ---------- */
.page-hero{
  position:relative;
  padding:clamp(52px,7vw,96px) 0 clamp(42px,5vw,68px);
  border-bottom:1px solid var(--line);
}
.page-hero-grid{
  display:grid;
  grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
  gap:clamp(36px,6vw,72px);
  align-items:center;
}
.page-hero h1{
  margin-top:20px;
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(42px,6vw,84px);
  line-height:1.06;
  letter-spacing:-.03em;
  text-wrap:balance;
}
.page-hero h1 .accent{color:var(--accent)}
.page-hero .lead{max-width:620px;margin-top:24px}
.page-hero .btn-row{margin-top:32px}
.page-hero-meta{
  display:flex;
  flex-wrap:wrap;
  gap:0;
  margin-top:34px;
  padding-top:14px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:9px;
  letter-spacing:.14em;
  color:var(--muted-2);
}
.page-hero-meta span{padding-right:16px;margin-right:16px;border-right:1px solid var(--line)}
.page-hero-meta span:last-child{border-right:0}

/* ---------- diagram ---------- */
.diagram{
  position:relative;
  padding:18px;
  border:1px solid var(--line);
  background:linear-gradient(170deg,var(--panel-2),var(--panel));
  overflow:hidden;
}
.diagram::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(rgba(236,232,223,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(236,232,223,.035) 1px, transparent 1px);
  background-size:32px 32px;
  -webkit-mask-image:radial-gradient(ellipse at 50% 45%, #000, transparent 78%);
  mask-image:radial-gradient(ellipse at 50% 45%, #000, transparent 78%);
  pointer-events:none;
}
.diagram-head{
  position:relative;
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding-bottom:12px;
  border-bottom:1px solid var(--line);
  font-family:var(--mono);
  font-size:8.5px;
  letter-spacing:.12em;
  color:var(--muted);
}
.diagram svg{position:relative;width:100%;height:auto;margin-top:8px}

/* 构造剖面交互：悬停/聚焦某一道，该层抬起发光，其余退后 */
.fx-layer{
  cursor:pointer;
  transform-box:fill-box;
  transform-origin:center;
  transition:transform .42s var(--ease),opacity .28s ease,filter .28s ease;
  outline:none;
}
.fx-layer path{transition:stroke-width .28s ease,stroke-opacity .28s ease}
.fx-stage.has-active .fx-layer:not(.is-active){opacity:.42}
.fx-layer.is-active{
  transform:translateY(-13px);
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.55)) drop-shadow(0 0 7px rgba(240,164,92,.42));
}
.fx-layer.is-active path{stroke-width:1.6;stroke-opacity:1}
.fx-lead{transition:stroke .28s ease,stroke-width .28s ease}
.fx-lead.is-active{stroke:var(--accent-bright);stroke-width:1.4}
.fx-labels text{transition:fill .28s ease,opacity .28s ease}
.fx-labels g[data-for]{opacity:.86;transition:opacity .28s ease}
.fx-labels g[data-for].is-active{opacity:1}
.fx-labels g[data-for].is-active text:first-child{fill:var(--accent-bright)}
.fx-labels.is-hovering g[data-for]:not(.is-active){opacity:.45}

.diagram-readout{
  position:relative;
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid var(--line);
  display:grid;
  gap:4px;
  min-height:52px;
}
.readout-row{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:baseline}
.readout-key{
  font-family:var(--mono);
  font-size:7.5px;
  letter-spacing:.14em;
  color:var(--muted-2);
}
.readout-val{
  font-size:11.5px;
  line-height:1.6;
  color:var(--muted);
  transition:color .28s ease;
}
.readout-val--name{color:var(--ink-2);font-family:var(--mono);font-size:10px;letter-spacing:.06em}
.diagram-readout.is-live .readout-val--name{color:var(--accent-bright)}
.diagram-readout.is-live .readout-val{color:var(--ink-2)}

@media (prefers-reduced-motion:reduce){
  .fx-layer{transition:opacity .2s ease}
  .fx-layer.is-active{transform:none;filter:drop-shadow(0 0 7px rgba(240,164,92,.5))}
}

.diagram-foot{
  position:relative;
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:10px;
  padding-top:12px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:8px;
  letter-spacing:.08em;
  color:var(--muted-2);
}

/* ---------- card grids ---------- */
.card-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  border:1px solid var(--line);
  background:var(--line);
}
.card{
  position:relative;
  min-height:196px;
  padding:clamp(22px,3vw,28px);
  background:var(--bg-2);
  transition:background .25s;
}
.card:hover{background:var(--panel-2)}
.card-no{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--accent)}
.card h3{margin:16px 0 8px;font-size:17px;font-weight:600}
.card p{font-size:13px;line-height:1.85;color:var(--muted)}
.card .tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:16px}
.card .tag{
  padding:3px 7px;
  border:1px solid var(--line);
  font-family:var(--mono);
  font-size:8px;
  letter-spacing:.08em;
  color:var(--muted);
}

/* ---------- split ---------- */
.split{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(36px,6vw,80px);
  align-items:start;
}
.split .lead{margin-top:20px}
.split--wide{grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr)}
.bullets{border-top:1px solid var(--line)}
.bullets li{
  display:grid;
  grid-template-columns:18px minmax(0,1fr);
  gap:12px;
  padding:15px 0;
  border-bottom:1px solid var(--line);
  font-size:13.5px;
  line-height:1.8;
  color:var(--ink-2);
}
.bullets li::before{content:"—";font-family:var(--mono);color:var(--accent);line-height:1.8}
.bullets b{color:var(--ink);font-weight:600}

/* ---------- comparison table ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line)}
.compare{width:100%;border-collapse:collapse;font-size:13px;min-width:620px}
.compare th,.compare td{padding:15px 18px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.compare th{
  background:var(--panel);
  font-family:var(--mono);
  font-size:9px;
  font-weight:500;
  letter-spacing:.12em;
  color:var(--muted);
}
.compare td{color:var(--muted);line-height:1.75}
.compare td:first-child{width:22%;color:var(--ink-2)}
.compare tr:last-child td{border-bottom:0}
.compare .yes{color:var(--sage)}
.compare .no{color:var(--muted-2)}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:24px;
  padding:20px 0;
  list-style:none;
  cursor:pointer;
  font-size:15px;
  line-height:1.7;
  color:var(--ink);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--mono);color:var(--accent);font-size:16px;line-height:1.4}
.faq details[open] summary::after{content:"−"}
.faq-a{max-width:780px;padding:0 0 22px;font-size:13px;line-height:1.9;color:var(--muted)}

/* ---------- timeline ---------- */
.timeline{margin-left:6px;border-left:1px solid var(--line)}
.timeline-item{position:relative;padding:0 0 30px 28px}
.timeline-item:last-child{padding-bottom:0}
.timeline-item::before{
  content:"";
  position:absolute;
  left:-4px;
  top:8px;
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--accent);
}
.timeline-item time{font-family:var(--mono);font-size:9px;letter-spacing:.12em;color:var(--accent)}
.timeline-item h3{margin:6px 0 4px;font-size:16px;font-weight:600}
.timeline-item p{font-size:13px;line-height:1.8;color:var(--muted)}

/* ---------- CTA band ---------- */
.cta-band{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);
  gap:clamp(24px,4vw,48px);
  align-items:center;
  padding:clamp(30px,5vw,54px);
  border:1px solid var(--line-strong);
  background:linear-gradient(118deg,var(--accent-soft),transparent 56%),var(--panel);
  overflow:hidden;
}
.cta-band::after{
  content:"";
  position:absolute;
  right:-80px;
  top:-80px;
  width:260px;
  height:260px;
  border:1px solid rgba(226,138,63,.16);
  border-radius:50%;
  pointer-events:none;
}
.cta-band h2{
  font-family:var(--display);
  font-weight:600;
  font-size:clamp(28px,3.4vw,44px);
  line-height:1.16;
  letter-spacing:-.03em;
}
.cta-band p{margin-top:12px;max-width:560px;font-size:13.5px;line-height:1.85;color:var(--muted)}
.cta-band .btn-row{justify-content:flex-end}

/* ---------- 404 ---------- */
.notfound{min-height:calc(100vh - var(--header-h));display:grid;place-items:center;padding:80px 0}
.notfound-inner{max-width:620px;text-align:center}
.notfound .code{
  font-family:var(--mono);
  font-size:clamp(72px,14vw,160px);
  line-height:1;
  letter-spacing:-.06em;
  color:var(--accent);
}
.notfound h1{font-family:var(--display);font-size:clamp(28px,4vw,44px);font-weight:600;margin-top:20px}
.notfound p{margin-top:14px;color:var(--muted)}
.notfound .btn-row{justify-content:center;margin-top:28px}

/* ---------- utilities ---------- */
.mt-24{margin-top:24px}
.mt-32{margin-top:32px}
.mt-48{margin-top:48px}
.mt-64{margin-top:64px}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .75s var(--ease),transform .75s var(--ease)}
.reveal.is-in{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.08s}
.reveal[data-delay="2"]{transition-delay:.16s}
.reveal[data-delay="3"]{transition-delay:.24s}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .hero-grid,.page-hero-grid,.stack-grid,.flagship-grid,.split,.contact-band,.cta-band{grid-template-columns:1fr}
  .stack-aside{position:static}
  .section-head{grid-template-columns:1fr}
  .section-head .lead{justify-self:start}
  .cta-band .btn-row{justify-content:flex-start}
  .contact-actions{justify-content:flex-start}
  .footer-grid{grid-template-columns:1.2fr repeat(3,minmax(0,.6fr))}
}
@media (max-width:900px){
  :root{--header-h:64px}
  .nav{
    display:none;
    position:absolute;
    top:var(--header-h);
    left:0;
    right:0;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    padding:12px var(--gutter) 20px;
    background:rgba(10,11,13,.98);
    border-bottom:1px solid var(--line-strong);
    -webkit-backdrop-filter:blur(18px);
    backdrop-filter:blur(18px);
  }
  .nav.is-open{display:flex}
  .nav a{padding:13px 0;border-bottom:1px solid var(--line);font-size:14px}
  .nav a[aria-current="page"]::after{left:0;right:auto;width:18px;bottom:6px}
  .nav-toggle{display:block}
  .header-cta{display:none}
  .btn.nav-cta-mobile{display:inline-flex;margin-top:16px}
  body.nav-open{overflow:hidden}
  .gap-grid{grid-template-columns:1fr}
  .gap-item{min-height:0}
  .card-grid,.industry-grid{grid-template-columns:repeat(2,1fr)}
  .process{grid-template-columns:repeat(2,1fr)}
  .principles{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  .hero{padding-top:46px}
  .hero h1{font-size:clamp(42px,12vw,62px)}
  .page-hero h1{font-size:clamp(38px,11vw,56px)}
  .hero-domains span{padding-right:12px;margin-right:12px;margin-bottom:6px}
  .card-grid,.industry-grid{grid-template-columns:1fr}
  .metrics{grid-template-columns:repeat(3,1fr)}
  .metric{padding:14px 12px}
  .demo-body{min-height:0;padding:20px 18px}
  .demo-tab{padding:12px 14px;font-size:11.5px}
  .layer{grid-template-columns:34px minmax(0,1fr);gap:12px;padding:18px}
  .layer-mark{display:none}
  .footer-grid{grid-template-columns:1fr}
  .footer-legal{display:block}
  .footer-legal > div{margin-bottom:6px}
  .quote{padding:24px 20px}
  .process{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .reveal{opacity:1;transform:none}
}
