/* ============================================================
   优算 AI · 官网共享设计系统
   ============================================================ */
:root{
  /* brand color */
  --azure:#017FBF; --deep:#014E78; --bright:#0E9BD6; --cyan:#19C6EA; --cyan-soft:#7FE3F6;
  --ink:#0E1518; --ink-2:#39434A; --ink-3:#6B757D; --ink-4:#9AA3AA;
  --line:#E7EBEE; --line-2:#EEF1F3;
  --paper:#F6F8FA; --surface:#fff; --surface-2:#F4F8FB; --surface-3:#EAF3F8;
  --ok:#1F9D6B; --warn:#E0922F; --err:#E5484D;
  --night:#06303f; --night-2:#0A3E50;
  --grad:linear-gradient(135deg,#0E9BD6 0%,#017FBF 52%,#014E78 100%);
  --grad-soft:linear-gradient(135deg,#E9F6FC 0%,#F2FAFD 100%);
  --sh-xs:0 1px 2px rgba(14,30,40,.05);
  --sh-sm:0 2px 8px rgba(14,30,40,.06),0 1px 2px rgba(14,30,40,.04);
  --sh-md:0 10px 30px rgba(14,40,60,.08),0 2px 8px rgba(14,40,60,.05);
  --sh-lg:0 24px 60px rgba(1,79,120,.14);
  --r-sm:10px; --r-md:16px; --r-lg:24px; --r-xl:32px;
  --maxw:1200px;
  --nav-h:74px;
  --ease:cubic-bezier(.22,.7,.3,1);
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 16px);}
body{
  margin:0;font-family:'Noto Sans SC',system-ui,sans-serif;color:var(--ink);
  background:var(--surface);-webkit-font-smoothing:antialiased;line-height:1.6;
  overflow-x:hidden;
}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;}
a{color:inherit;text-decoration:none;}
img,svg{display:block;max-width:100%;}
h1,h2,h3,h4,p{margin:0;}

/* ---------- layout ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
.section{padding:104px 0;position:relative;}
.section.tight{padding:72px 0;}
@media(max-width:768px){.section{padding:64px 0;}.wrap{padding:0 20px;}}

/* ---------- eyebrow / headings ---------- */
.eyebrow{
  display:inline-flex;align-items:center;gap:11px;font-family:'JetBrains Mono',monospace;
  font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--azure);font-weight:500;
}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--azure);}
.eyebrow.center{justify-content:center;}
.h-display{font-weight:900;letter-spacing:-.025em;line-height:1.05;
  font-size:clamp(38px,6.2vw,68px);}
.h-section{font-weight:900;letter-spacing:-.02em;line-height:1.12;
  font-size:clamp(30px,4.2vw,50px);}
.h-sub{color:var(--ink-3);font-size:clamp(17px,2vw,21px);font-weight:400;line-height:1.6;}
.lead{color:var(--ink-2);font-size:18px;line-height:1.75;}
.text-azure{color:var(--azure);}
.text-cyan{color:var(--cyan);}
.center{text-align:center;}
.mx-auto{margin-left:auto;margin-right:auto;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;border:none;
  padding:14px 26px;border-radius:999px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),background .2s;
  white-space:nowrap;line-height:1;
}
.btn svg{width:17px;height:17px;}
.btn-primary{background:var(--azure);color:#fff;box-shadow:0 8px 20px rgba(1,127,191,.26);}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(1,127,191,.34);}
.btn-ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line);}
.btn-ghost:hover{border-color:var(--azure);color:var(--azure);transform:translateY(-2px);}
.btn-light{background:#fff;color:var(--azure);box-shadow:var(--sh-sm);}
.btn-light:hover{transform:translateY(-2px);box-shadow:var(--sh-md);}
.btn-on-dark{background:rgba(255,255,255,.12);color:#fff;border:1.5px solid rgba(255,255,255,.3);backdrop-filter:blur(6px);}
.btn-on-dark:hover{background:rgba(255,255,255,.2);transform:translateY(-2px);}
.btn-lg{padding:17px 34px;font-size:17px;}

/* ---------- wordmark ---------- */
.wm{display:inline-flex;align-items:baseline;gap:.14em;line-height:1;font-weight:900;}
.wm .cn{transform:skewX(-9deg);}
.wm .ai{font-weight:500;font-style:italic;color:var(--cyan);letter-spacing:.02em;}

/* ---------- tag / pill ---------- */
.pill{display:inline-flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;
  font-size:13px;letter-spacing:.04em;padding:7px 15px;border-radius:999px;
  background:var(--surface-2);border:1px solid var(--surface-3);color:var(--azure);font-weight:500;}
.pill .dot{width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 3px rgba(25,198,234,.2);}

/* ============================================================
   NAV
   ============================================================ */
.nav{position:fixed;top:0;left:0;right:0;height:var(--nav-h);z-index:100;
  display:flex;align-items:center;transition:background .3s,box-shadow .3s,border-color .3s;
  background:rgba(255,255,255,.72);backdrop-filter:saturate(180%) blur(16px);
  border-bottom:1px solid transparent;}
.nav.scrolled{background:rgba(255,255,255,.9);border-bottom-color:var(--line);box-shadow:var(--sh-xs);}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;width:100%;}
.nav-brand{display:flex;align-items:center;gap:11px;font-size:22px;}
.nav-brand img{width:34px;height:34px;border-radius:9px;}
.nav-links{display:flex;align-items:center;gap:6px;}
.nav-links a{padding:9px 15px;border-radius:8px;font-size:15px;font-weight:500;color:var(--ink-2);
  transition:color .2s,background .2s;}
.nav-links a:hover{color:var(--azure);background:var(--surface-2);}
.nav-links a.active{color:var(--azure);font-weight:700;}
.nav-cta{display:flex;align-items:center;gap:12px;}
.nav-toggle{display:none;width:42px;height:42px;border:none;background:transparent;cursor:pointer;
  flex-direction:column;justify-content:center;gap:5px;padding:0;}
.nav-toggle span{display:block;width:22px;height:2px;background:var(--ink);border-radius:2px;margin:0 auto;
  transition:transform .3s,opacity .3s;}
.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.open span:nth-child(2){opacity:0;}
.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

.mobile-menu{position:fixed;top:var(--nav-h);left:0;right:0;bottom:0;z-index:99;
  background:rgba(255,255,255,.98);backdrop-filter:blur(20px);padding:24px;
  transform:translateY(-12px);opacity:0;pointer-events:none;transition:opacity .26s,transform .26s;
  display:flex;flex-direction:column;gap:6px;}
.mobile-menu.open{opacity:1;transform:none;pointer-events:auto;}
.mobile-menu a{padding:16px 18px;border-radius:12px;font-size:19px;font-weight:600;color:var(--ink);
  display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-2);}
.mobile-menu a:active{background:var(--surface-2);}
.mobile-menu .btn{margin-top:18px;}

@media(max-width:920px){
  .nav-links,.nav-cta .btn{display:none;}
  .nav-toggle{display:flex;}
}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:var(--night);color:#fff;padding:72px 0 36px;}
.footer-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;}
.footer-brand .wm{font-size:26px;color:#fff;margin-bottom:16px;}
.footer-brand p{color:rgba(255,255,255,.6);font-size:15px;max-width:300px;}
.footer-col h4{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan-soft);
  font-family:'JetBrains Mono',monospace;font-weight:500;margin-bottom:18px;}
.footer-col a{display:block;color:rgba(255,255,255,.7);font-size:15px;padding:6px 0;transition:color .2s;}
.footer-col a:hover{color:#fff;}
.footer-bottom{margin-top:56px;padding-top:28px;border-top:1px solid rgba(255,255,255,.12);
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;
  color:rgba(255,255,255,.5);font-size:14px;}
.footer-bottom .mono{letter-spacing:.04em;}
@media(max-width:768px){
  .footer-top{grid-template-columns:1fr 1fr;gap:32px;}
  .footer-brand{grid-column:1/-1;}
}

/* ============================================================
   CARDS / GRID
   ============================================================ */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);}
.grid{display:grid;gap:24px;}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
@media(max-width:900px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;}}

/* ============================================================
   SCROLL REVEAL  (FOUC-safe: visible by default; only hidden
   when <html class="anim"> is set by a sync head script on a
   visible, motion-OK page. Captures / background tabs / reduced
   motion never get the class, so content is always painted.)
   ============================================================ */
.reveal{opacity:1;transform:none;}
html.anim .reveal{opacity:0;transform:translateY(26px);
  transition:opacity .7s var(--ease),transform .7s var(--ease);}
html.anim .reveal.in{opacity:1;transform:none;}
html.anim .reveal[data-d="1"]{transition-delay:.08s;}
html.anim .reveal[data-d="2"]{transition-delay:.16s;}
html.anim .reveal[data-d="3"]{transition-delay:.24s;}
html.anim .reveal[data-d="4"]{transition-delay:.32s;}
html.anim .reveal[data-d="5"]{transition-delay:.4s;}

/* ============================================================
   PAGE HERO (sub-pages)
   ============================================================ */
.page-hero{padding:calc(var(--nav-h) + 72px) 0 64px;background:var(--grad-soft);
  border-bottom:1px solid var(--line);position:relative;overflow:hidden;}
.page-hero .wrap{position:relative;z-index:1;}
.page-hero .h-display{font-size:clamp(34px,5vw,56px);}
.page-hero .h-sub{margin-top:18px;max-width:620px;}
.page-hero-glow{position:absolute;width:680px;height:680px;border-radius:50%;right:-200px;top:-340px;
  background:radial-gradient(circle,rgba(25,198,234,.16),transparent 64%);pointer-events:none;}

/* ============================================================
   UTIL
   ============================================================ */
.stack-sm{display:flex;flex-direction:column;gap:8px;}
.row{display:flex;align-items:center;}
.gap-sm{gap:12px;}.gap-md{gap:20px;}.gap-lg{gap:32px;}
.wrap-flex{display:flex;flex-wrap:wrap;}
.mt-s{margin-top:14px;}.mt-m{margin-top:26px;}.mt-l{margin-top:44px;}
.divider{height:1px;background:var(--line);border:none;margin:0;}
