/* ============================================================
   知网科技 — Design tokens
   ============================================================ */
:root{
  /* color */
  --ink:        #0B1120;   /* deep navy-black, primary dark surface */
  --ink-soft:   #121B2E;   /* slightly lifted dark surface */
  --paper:      #F6F8FB;   /* cool off-white, primary light surface */
  --paper-dim:  #EBEFF5;
  --line:       #1E293B;   /* hairline on dark */
  --line-soft:  #DDE3EC;   /* hairline on light */
  --blue:       #2F6FED;   /* primary accent — signal / action */
  --blue-deep:  #1D4FC4;
  --mint:       #00D4B5;   /* secondary accent — status / data */
  --text:       #16202E;
  --text-dim:   #5B6B82;
  --text-inverse: #E8EDF6;
  --text-inverse-dim: #8FA0BA;

  /* type */
  --font-display: "Source Han Sans CN", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-body:    "PingFang SC", "Microsoft YaHei", "Source Han Sans CN", sans-serif;
  --font-mono:    "JetBrains Mono", "Fira Code", "Consolas", monospace;

  /* layout */
  --container: 1180px;
  --radius: 3px;
}

*{margin:0;padding:0;box-sizing:border-box;}

html{scroll-behavior:smooth;}

body{
  font-family:var(--font-body);
  color:var(--text);
  background:var(--paper);
  line-height:1.75;
  font-size:16px;
  -webkit-font-smoothing:antialiased;
}

.container{
  width:var(--container);
  max-width:90%;
  margin:0 auto;
}

a{color:inherit;}

img,svg{display:block;max-width:100%;}

/* ------------------------------------------------------------
   Eyebrow / mono labels — used as structural tags, not decoration
   ------------------------------------------------------------ */
.eyebrow{
  font-family:var(--font-mono);
  font-size:12.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--blue);
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
}
.eyebrow::before{
  content:"";
  width:16px;
  height:1px;
  background:var(--blue);
  display:inline-block;
}

/* ------------------------------------------------------------
   Header
   ------------------------------------------------------------ */
.header{
  position:fixed;
  top:0;left:0;right:0;
  height:68px;
  background:rgba(11,17,32,.86);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(255,255,255,.08);
  z-index:100;
  transition:background .3s ease;
}
.nav{
  height:68px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.logo{
  font-family:var(--font-display);
  font-size:17px;
  font-weight:700;
  color:var(--text-inverse);
  letter-spacing:.02em;
  display:flex;
  align-items:baseline;
  gap:8px;
}
.logo .logo-mark{
  color:var(--mint);
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:400;
}
nav.nav-links{display:flex;align-items:center;gap:8px;}
nav.nav-links a{
  margin-left:6px;
  padding:8px 16px;
  color:var(--text-inverse-dim);
  text-decoration:none;
  font-size:14.5px;
  border-radius:var(--radius);
  transition:color .2s ease, background .2s ease;
}
nav.nav-links a:hover{color:var(--text-inverse);background:rgba(255,255,255,.06);}
nav.nav-links a.active{color:var(--mint);}

/* ------------------------------------------------------------
   Hero — the signature: a modular system diagram
   ------------------------------------------------------------ */
.hero{
  position:relative;
  min-height:100vh;
  background:var(--ink);
  color:var(--text-inverse);
  display:flex;
  align-items:center;
  overflow:hidden;
  padding-top:68px;
}
.hero::before{
  /* blueprint grid */
  content:"";
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 80% 60% at 50% 40%, black 40%, transparent 90%);
  pointer-events:none;
}
.hero-grid{
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:40px;
  align-items:center;
  width:100%;
}
.hero-copy .eyebrow{color:var(--mint);}
.hero-copy .eyebrow::before{background:var(--mint);}
.hero h1{
  font-family:var(--font-display);
  font-size:52px;
  font-weight:700;
  line-height:1.28;
  letter-spacing:.01em;
  margin-bottom:24px;
}
.hero h1 em{
  font-style:normal;
  color:var(--mint);
}
.hero p.lede{
  font-size:17px;
  color:var(--text-inverse-dim);
  max-width:480px;
  margin-bottom:36px;
}
.hero-actions{display:flex;align-items:center;gap:22px;}
.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  background:var(--blue);
  color:#fff;
  padding:14px 28px;
  border-radius:var(--radius);
  text-decoration:none;
  font-size:15px;
  font-weight:600;
  transition:background .2s ease, transform .2s ease;
  border:1px solid transparent;
}
.btn:hover{background:var(--blue-deep);transform:translateY(-1px);}
.btn-ghost{
  background:transparent;
  border:1px solid rgba(255,255,255,.18);
  color:var(--text-inverse);
}
.btn-ghost:hover{border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.04);}

.hero-stats{
  display:flex;
  gap:36px;
  margin-top:56px;
  padding-top:28px;
  border-top:1px solid rgba(255,255,255,.1);
}
.hero-stats div{display:flex;flex-direction:column;gap:4px;}
.hero-stats .num{
  font-family:var(--font-mono);
  font-size:24px;
  color:var(--mint);
  font-weight:600;
}
.hero-stats .label{font-size:13px;color:var(--text-inverse-dim);}

/* diagram */
.hero-diagram{position:relative;z-index:2;}
.hero-diagram svg{width:100%;height:auto;overflow:visible;}
.node-dot{fill:var(--ink);stroke:var(--blue);stroke-width:1.4;}
.node-dot.mint{stroke:var(--mint);}
.node-pulse{
  fill:none;
  stroke:var(--blue);
  stroke-width:1;
  opacity:0;
  transform-origin:center;
  animation:pulse 3.6s ease-out infinite;
}
.node-pulse.mint{stroke:var(--mint);}
.node-pulse.d1{animation-delay:0s;}
.node-pulse.d2{animation-delay:1.2s;}
.node-pulse.d3{animation-delay:2.4s;}
@keyframes pulse{
  0%{opacity:.7;transform:scale(.6);}
  100%{opacity:0;transform:scale(2.6);}
}
.edge{
  stroke:rgba(255,255,255,.16);
  stroke-width:1;
}
.edge-flow{
  stroke:var(--mint);
  stroke-width:1.4;
  stroke-dasharray:4 8;
  animation:flow 3.5s linear infinite;
  opacity:.85;
}
@keyframes flow{ to{ stroke-dashoffset:-120; } }
.node-label{
  font-family:var(--font-mono);
  font-size:10.5px;
  fill:var(--text-inverse-dim);
}

/* ------------------------------------------------------------
   Sections
   ------------------------------------------------------------ */
.section{padding:120px 0;}
.section-head{
  max-width:640px;
  margin-bottom:64px;
}
.section-head h2{
  font-family:var(--font-display);
  font-size:34px;
  font-weight:700;
  letter-spacing:.01em;
  color:var(--text);
}
.section-head p{color:var(--text-dim);font-size:15.5px;margin-top:14px;}

.section.dark{background:var(--ink);color:var(--text-inverse);}
.section.dark .section-head h2{color:var(--text-inverse);}
.section.dark .section-head p{color:var(--text-inverse-dim);}

/* service cards — modules on a grid, numbered because they ARE a
   sequential engagement flow: understand → build → ship */
.cards{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--line-soft);
  border:1px solid var(--line-soft);
}
.card{
  background:var(--paper);
  padding:44px 36px;
  transition:background .25s ease;
  position:relative;
}
.card:hover{background:#fff;}
.card .idx{
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--blue);
  display:block;
  margin-bottom:22px;
}
.card h3{
  font-family:var(--font-display);
  font-size:19px;
  font-weight:700;
  margin-bottom:12px;
}
.card p{color:var(--text-dim);font-size:14.5px;}
.card::after{
  content:"";
  position:absolute;
  left:36px;right:36px;bottom:0;
  height:2px;
  background:var(--blue);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .3s ease;
}
.card:hover::after{transform:scaleX(1);}

/* tech capability — stack tags in a schematic row */
.stack-row{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
}
.tag{
  font-family:var(--font-mono);
  font-size:13.5px;
  color:var(--text-inverse);
  border:1px solid rgba(255,255,255,.18);
  padding:10px 18px;
  border-radius:var(--radius);
  background:rgba(255,255,255,.03);
  transition:border-color .2s ease, color .2s ease;
}
.tag:hover{border-color:var(--mint);color:var(--mint);}

.stack-layout{
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:60px;
  align-items:start;
}
.stack-note{color:var(--text-inverse-dim);font-size:14.5px;line-height:1.9;}

/* about */
.about-layout{
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:70px;
  align-items:start;
}
.about-mark{
  font-family:var(--font-mono);
  font-size:120px;
  line-height:1;
  color:var(--paper-dim);
  font-weight:700;
  user-select:none;
}
.about-body p{color:var(--text-dim);font-size:15.5px;margin-bottom:20px;max-width:580px;}
.about-facts{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px;
  margin-top:36px;
}
.about-facts .fact{border-left:2px solid var(--blue);padding:4px 0 4px 18px;}
.about-facts .fact .num{font-family:var(--font-mono);font-weight:700;font-size:22px;color:var(--text);}
.about-facts .fact .label{font-size:13.5px;color:var(--text-dim);margin-top:2px;}

/* CTA band */
.cta-band{
  background:var(--paper-dim);
  border-top:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);
  padding:70px 0;
  text-align:center;
}
.cta-band h2{
  font-family:var(--font-display);
  font-size:28px;
  margin-bottom:14px;
}
.cta-band p{color:var(--text-dim);margin-bottom:30px;}
.cta-band .btn{background:var(--ink);}
.cta-band .btn:hover{background:#000;}

/* footer */
footer{
  padding:36px 0;
  text-align:center;
  background:var(--ink);
  color:var(--text-inverse-dim);
  font-size:13.5px;
}
footer .container{
  display:flex;
  flex-direction:column;
  gap:8px;
}
footer a{color:var(--text-inverse-dim);text-decoration:none;}
footer a:hover{color:var(--mint);}

/* ------------------------------------------------------------
   Reveal on scroll
   ------------------------------------------------------------ */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1;transform:translateY(0);}

/* ------------------------------------------------------------
   Accessibility
   ------------------------------------------------------------ */
a:focus-visible,button:focus-visible{
  outline:2px solid var(--blue);
  outline-offset:2px;
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
  html{scroll-behavior:auto;}
}

/* ------------------------------------------------------------
   Responsive
   ------------------------------------------------------------ */
@media(max-width:960px){
  .hero-grid{grid-template-columns:1fr;}
  .hero-diagram{order:-1;opacity:.5;max-height:280px;overflow:hidden;}
  .hero h1{font-size:38px;}
  .cards{grid-template-columns:1fr;}
  .stack-layout,.about-layout{grid-template-columns:1fr;gap:36px;}
  .about-mark{font-size:80px;}
  nav.nav-links{display:none;}
}
@media(max-width:600px){
  .section{padding:80px 0;}
  .hero h1{font-size:30px;}
  .hero-stats{flex-wrap:wrap;row-gap:20px;}
  .about-facts{grid-template-columns:1fr;}
}
