/* ============================================================
 * style.css — 全站公共样式（被所有页面共用）
 * 内容：基础重置 / 工具类 / 动画 / 导航 / 按钮 / 区块标题 /
 *       页面 banner / 卡片 / 页脚 / 公共 CTA / FAQ
 * 多端适配请见 media.css；各页面专属样式请见 page.css。
 * ============================================================ */

/* ========== Reset & Base ========== */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
:root {
  --weaver-blue: #1A56DB;
  --weaver-blue-dark: #0B2A6B;
  --weaver-blue-light: #3B82F6;
  --weaver-blue-50: #EFF6FF;
  --weaver-blue-100: #DBEAFE;
  --weaver-cyan: #06B6D4;
  --weaver-teal: #0D9488;
  --weaver-slate: #1E293B;
  --weaver-slate-2: #334155;
  --weaver-slate-3: #64748B;
  --weaver-slate-4: #94A3B8;
  --weaver-bg-dark: #061840;
  --weaver-bg-dark-2: #0F1E3D;
  --weaver-bg-dark-3: #0a2151;
  --weaver-bg-light: #F8FAFC;
  --weaver-bg-light-2: #F1F5F9;
  --weaver-white: #FFFFFF;
  --weaver-amber: #F59E0B;
  --weaver-red: #DC2626;
  --weaver-green: #10B981;
  --weaver-purple: #8B5CF6;
  --weaver-gradient: linear-gradient(135deg, #0B2A6B 0%, #1A56DB 50%, #3B82F6 100%);
  --weaver-gradient-light: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%);
  --shadow-sm: 0 1px 3px rgba(0,0,0,.08);
  --shadow-md: 0 4px 16px rgba(0,0,0,.10);
  --shadow-lg: 0 12px 40px rgba(0,0,0,.15);
  --shadow-blue: 0 8px 30px rgba(26,86,219,.25);
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --radius-xl: 28px;
  --max-w: 1200px;
  --transition: .35s cubic-bezier(.4,0,.2,1);
  --font-h1: 24px;
  --font-h2: 20px;
  --font-h3: 19px;
  --font-h4: 18px;
  --font-h5: 17px;
  --font-h6: 16px;
  --font-h7: 15px;
  --font-h8: 14px;
  --font-min: 13px;
  --font-min2: 14px;
  --font-title: 13px;
  --font-desc: 13px;
  --font-text: 13px;
  --font-titlesection: 38px;
  --font-descsection: 16px;
  --border-Normal:#E2E8F0;

  /* 移动端 */
  --font-m-title: 14px;
  --font-m-desc: 12px;
  --font-m-titlesection: 38px;
  --font-m-descsection: 16px;
  --gap-min: 12px;
  --padding-min: 22px 16px;
  /* 移动端end */
}
html { scroll-behavior: smooth; font-size: 16px; }
body {
  font-family: PingFangSC, Arial, Microsoft yahei, Tahoma, sans-serif !important;
  background: var(--weaver-white);
  color: var(--weaver-slate);
  line-height: 1.7;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
a { text-decoration: none; outline: none; color: inherit; }
a:hover { text-decoration: none;}
img { max-width: 100%; display: block; }
ul { list-style: none; }

/* ========== Utility ========== */
.container { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }
.section { padding: 100px 0; position: relative; }
.section-dark { background: var(--weaver-blue-dark); color: #CBD5E1; }
.section-dark-2 { background: var(--weaver-blue-dark); color: #CBD5E1; }
.section-light { background: var(--weaver-bg-light); }
.section-light-2 { background: var(--weaver-white); }
.text-gradient {
  background: linear-gradient(90deg, #60A5FA, #3B82F6, #1A56DB);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.text-gradient-cyan {
  background: linear-gradient(90deg, #22D3EE, #06B6D4, #0891B2);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ========== Animations ========== */
@keyframes fadeInUp { from { opacity:0; transform:translateY(40px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes scaleIn { from { opacity:0; transform:scale(.9); } to { opacity:1; transform:scale(1); } }
@keyframes float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-12px); } }
@keyframes pulse-ring { 0% { transform:scale(.8); opacity:.8; } 100% { transform:scale(2.5); opacity:0; } }
@keyframes shimmer { 0% { background-position:-200% 0; } 100% { background-position:200% 0; } }
@keyframes rotate-slow { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }
@keyframes dash { to { stroke-dashoffset:0; } }
@keyframes blink { 0%,100% { opacity:1; } 50% { opacity:.3; } }
@keyframes countUp { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }

.reveal { opacity:0; transform:translateY(40px); transition: opacity .7s ease, transform .7s ease; }
.reveal.active { opacity:1; transform:translateY(0); }
.reveal-delay-1 { transition-delay:.1s; }
.reveal-delay-2 { transition-delay:.2s; }
.reveal-delay-3 { transition-delay:.3s; }
.reveal-delay-4 { transition-delay:.4s; }

/* ========== Navigation ========== */
.nav {
  position: fixed; top:0; left:0; right:0; z-index:1000;
  background: rgba(10,22,40,.04);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(255,255,255,.08);
  transition: var(--transition);
}
.nav.scrolled { background: var(--weaver-blue-dark); box-shadow: 0 2px 20px rgba(0,0,0,.12); }
.nav-inner {
  max-width: var(--max-w); margin:0 auto; padding:0 24px;
  height:64px; display:flex; align-items:center; justify-content:space-between;
}
.nav-logo { display:flex; align-items:center; gap:10px; }
.nav-logo-icon {
  width:36px; height:36px; border-radius:8px;
  background: var(--weaver-gradient);
  display:flex; align-items:center; justify-content:center;
  font-size:18px; font-weight:900; color:#fff; letter-spacing:-1px;
}
.nav-logo-text { font-size:18px; font-weight:700; color:#fff; letter-spacing:1px; }
.nav-logo-sub { font-size:11px; color:#94A3B8; font-weight:400; margin-left:2px; }
.nav-links { display:flex; gap:28px; align-items:center; }
.nav-links a {
  font-size:14px; color:#94A3B8; font-weight:400;
  transition: var(--transition); position:relative;
}
.nav-links a:hover, .nav-links a.active { color:#fff; }
.nav-links a::after {
  content:''; position:absolute; bottom:-4px; left:0; width:0; height:2px;
  background: var(--weaver-blue-light); transition: var(--transition);
}
.nav-links a:hover::after, .nav-links a.active::after { width:100%; }
.nav-cta {
  padding:8px 20px; border-radius:8px;
  background: var(--weaver-blue); color:#fff;
  font-size:14px; font-weight:500;
  transition: var(--transition);
}
.nav-cta:hover { background: var(--weaver-blue-light); transform:translateY(-1px); box-shadow: var(--shadow-blue); }

/* 移动端汉堡菜单 */
.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 44px;
  height: 44px;
  gap: 6px;
  padding: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 1002;
}
.nav-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  background: #fff;
  border-radius: 2px;
  transition: .3s ease;
}
.nav.open .nav-toggle span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.nav.open .nav-toggle span:nth-child(2) { opacity: 0; }
.nav.open .nav-toggle span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

@media (max-width: 968px) {
  .nav .nav-cta {
    display: none;
  }
  .nav-toggle { display: flex; margin-left: auto; margin-right: -12px; }
  .nav-links {
    display: none;
    position: fixed;
    top: 64px;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--weaver-blue-dark);
    flex-direction: column;
    gap: 0;
    padding: 16px 24px 32px;
    overflow-y: auto;
    z-index: 1001;
  }
  .nav.open .nav-links { display: flex; }
  .nav.open { background: var(--weaver-blue-dark); }
  .nav-links a {
    font-size: 18px;
    padding: 14px 0;
    border-bottom: 1px solid rgba(255,255,255,.08);
  }
  .nav-links a::after { display: none; }
  .nav-links a.active { color: #fff; }
  .nav-cta { padding: 6px 14px; font-size: 13px; }
}

/* ========== Buttons ========== */
.btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 32px; border-radius:12px;
  font-size:16px; font-weight:600; cursor:pointer;
  transition: var(--transition); border:none; white-space:nowrap;
}
.btn-primary {
  background: var(--weaver-blue); 
  color:#fff;
}
.btn-primary:hover { transform:translateY(-2px); box-shadow: 0 12px 40px rgba(26,86,219,.5); }
.btn-secondary {
  background: rgba(255,255,255,.08); color:#fff;
  border:1px solid rgba(255,255,255,.15);
  backdrop-filter: blur(10px);
}
.btn-secondary:hover { background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.25); }
.btn-light {
  background: var(--weaver-blue-50); color: var(--weaver-blue);
  border: 1px solid var(--weaver-blue-100);
}
.btn-light:hover { background: var(--weaver-blue-100); transform:translateY(-2px); }

/* ========== Section Header ========== */
.section-header { text-align:center; max-width:720px; margin:0 auto 60px; }
.solsectionheader { margin:0 auto 44px; }
.section-tag {
  display:inline-flex; align-items:center; gap:6px;
  padding:6px 16px; border-radius:100px;
  background: var(--weaver-blue-50); color: var(--weaver-blue);
  font-size:13px; font-weight:600; margin-bottom:16px;
}
.section-dark .section-tag, .section-dark-2 .section-tag {
  background: var(--weaver-blue);
   color:#93C5FD;
}
.section-title {
  font-size: var(--font-titlesection); font-weight:800; line-height:1.3;
  color: var(--weaver-slate); margin-bottom:16px;
}
.section-dark .section-title, .section-dark-2 .section-title { color:#fff; }
.section-desc {
  font-size:var(--font-descsection); color: var(--weaver-slate-3); line-height:1.8;
}
.section-dark .section-desc, .section-dark-2 .section-desc { color:#94A3B8; }

/* ========== Page Banner ========== */
.page-banner {
  padding:164px 0 96px; position:relative; overflow:hidden;
  background: var(--weaver-blue-dark);
  height: 500px;
}
/* banner 按页面差异化背景（方案 / 技术 / 案例 / 泛微） */
.page-banner.solutionbg {
  background: #02265f;
}
.page-banner.techbg {
  background: #0a1b33;
}
.page-banner.casebg {
  background: #012b70;
}
.page-banner.aboutbg {
  background: #071645;
}
.page-banner-bg {
  position:absolute; inset:0; z-index:0;
  /* background:
    radial-gradient(ellipse 80% 50% at 50% 0%, rgba(26,86,219,.25), transparent),
    radial-gradient(ellipse 60% 40% at 80% 80%, rgba(6,182,212,.12), transparent); */
}
.page-banner.solutionbg .page-banner-bg {
  background: url('../images/banner/bg_banner_solution2.jpg') center center;
  background-size: auto 100%;
  background-repeat: no-repeat;
  opacity: .48;
}
.page-banner.techbg .page-banner-bg {
  background: url('../images/banner/bg_banner_tech2.jpg') center center;
  background-size: auto 100%;
  background-repeat: no-repeat;
  opacity: .48;
}
.page-banner.casebg .page-banner-bg{
  background: url('../images/banner/bg_banner_case.jpg') center center;
  background-size: auto 100%;
  background-repeat: no-repeat;
  opacity: .48;
}
.page-banner.aboutbg .page-banner-bg{
  background: url('../images/banner/bg_banner_about.jpg')  center center;
  background-size: auto 100%;
  background-repeat: no-repeat;
  opacity: .48;
}

.page-banner-grid {
  position:absolute; inset:0; z-index:0; opacity:.1;
}
.page-banner-content { position:relative; z-index:2; text-align:center; max-width:800px; margin:24px auto 0 auto; }
.page-banner h1 {
  font-size:44px; font-weight:900; color:#fff; margin-bottom:20px;
  animation: fadeInUp .8s ease;
}
.page-banner .banner-sub {
  font-size:18px; color:#94A3B8; line-height:1.8;
  animation: fadeInUp .8s ease .1s both;
}
.page-banner .breadcrumb {
  display:flex; gap:8px; align-items:center; justify-content:center;
  margin-top:24px; font-size:14px; color:#64748B;
  animation: fadeInUp .8s ease .2s both;
}
.page-banner .breadcrumb a { color:rgba(255,255,255,.32); transition:var(--transition); }
.page-banner .breadcrumb a:hover { color:#fff; }
.page-banner .breadcrumb span { color:rgba(255,255,255,.32); }

/* ========== Cards ========== */
.feature-card {
  background:#fff; border:1px solid #E2E8F0; border-radius: var(--radius-lg);
  padding:36px 28px; transition: var(--transition);
  position:relative; overflow:hidden;
}
.feature-card:hover { transform:translateY(-6px); box-shadow: var(--shadow-lg); border-color: var(--weaver-blue-light); }
.feature-card .card-icon {
  width:56px; height:56px; border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  font-size:26px; margin-bottom:20px;
}
.feature-card h3 { font-size:19px; font-weight:700; color: var(--weaver-slate); margin-bottom:10px; }
.feature-card p { font-size:15px; color: var(--weaver-slate-3); line-height:1.7; }

/* ========== Footer ========== */
.footer {
  background:var(--weaver-blue-dark); padding:48px 0 32px; color:#64748B;
}
.footer-inner {
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:20px;
}
.footer-logo { display:flex; align-items:center; gap:10px; }
.footer-logo .brand{ display: block; }
.footer-logo .brand img{ height: 36px; }
.footer-logo .nav-logo-icon { width:32px; height:32px; font-size:16px; }
.footer-logo-text { 
  font-size: 16px;
  font-weight: 700;
  color: #ffffff;
  padding-top: 6px;
 }
.footer-links { display:flex; gap:24px; }
.footer-links a { font-size:13px; color:rgba(255,255,255,.48); transition: var(--transition); }
.footer-links a:hover { color:#94A3B8; }
.footer-copy { font-size:13px; color:rgba(255,255,255,.32); text-align:center; margin-top:24px; padding-top:24px; border-top:1px solid rgba(255,255,255,.05); }

/* ========== CTA (公共底部咨询区，被所有页面共用) ========== */
.cta-section { position:relative; overflow:hidden; background: var(--weaver-bg-dark); }
.cta-bg {
  position:absolute; inset:0; z-index:0;
  background: var(--weaver-blue-dark);
  border-bottom: 1px solid #1f4491;
  /* background:
    radial-gradient(ellipse 60% 50% at 30% 50%, rgba(26,86,219,.2), transparent),
    radial-gradient(ellipse 50% 40% at 70% 50%, rgba(6,182,212,.10), transparent); */
}
.cta-content { position:relative; z-index:2; text-align:center; max-width:700px; margin:0 auto; }
.cta-content h2 { font-size:38px; font-weight:800; color:#fff; margin-bottom:16px; }
.cta-content p { font-size:17px; color:#94A3B8; margin-bottom:36px; line-height:1.8; }
.cta-form { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; max-width:560px; margin:0 auto; }
.cta-input {
  flex:1; min-width:200px; padding:14px 20px; border-radius:12px;
  border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.05); color:#fff;
  font-size:15px; font-family:inherit; transition: var(--transition);
}
.cta-input::placeholder { color:#64748B; }
.cta-input:focus { outline:none; border-color: var(--weaver-blue-light); background:rgba(255,255,255,.08); }
.cta-contact-info { display:flex; gap:40px; justify-content:center; margin-top:40px; flex-wrap:wrap; }
.cta-contact-item { display:flex; align-items:center; gap:10px; font-size:15px; color:#94A3B8; }
.cta-contact-item .icon { font-size:20px; }
.cta-contact-item .value { color:#E2E8F0; font-weight:600; }

/* ========== FAQ (常见问题，被所有页面共用) ========== */
.faq-section { background: var(--weaver-bg-light); }
.faq-list { display: flex; flex-direction: column; gap: 12px; }
.faq-item {
  background: #fff; border: 1px solid #E2E8F0; border-radius: var(--radius-lg);
  overflow: hidden; transition: var(--transition);
}
.faq-item.open { border-color: var(--weaver-blue-light); box-shadow: var(--shadow-md); }
.faq-q {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 22px 28px; background: none; border: none; cursor: pointer; text-align: left;
  font-family: inherit; font-size: 17px; font-weight: 600; color: var(--weaver-slate);
}
.faq-q:hover { color: var(--weaver-blue); }
.faq-icon {
  flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--weaver-blue-50); color: var(--weaver-blue);
  font-size: 20px; font-weight: 700; line-height: 1; transition: transform .3s ease, background .3s ease, color .3s ease;
}
.faq-item.open .faq-icon { transform: rotate(45deg); background: var(--weaver-blue); color: #fff; }
.faq-a { max-height: 0; overflow: hidden; transition: max-height .4s ease; }
.faq-item.open .faq-a { max-height: 600px; }
.faq-a-inner { padding: 0 28px 24px; font-size: var(--font-min); color: var(--weaver-slate-3); line-height: 1.9; }

.brand-text { display: flex; flex-direction: column; line-height: 1.2; }
.brand-name { font-weight: 700; font-size: 15.5px; }
.nav .brand-name {
  color: #fff;
  transition: color 0.3s ease;
  font-size: 15px;
  line-height: 1.7;
  padding: 8px 12px;
}
.brandinfo { width: auto;min-height: 1px; }
.brandinfo a{ 
  display: block;
  float: left;
}
.brandinfo a img{ 
  height: 30px;
}

/* ========== 3D 单色 SVG 图标系统 ========== */
/* 统一：同色系渐变（浅蓝→深蓝）+ 投影，呈现立体单色观感；颜色改一处即可全局换色 */
.i3d {
  width: 1em;
  height: 1em;
  display: inline-block;
  vertical-align: -0.15em;
  fill: none;
  stroke: currentColor;
  color: #2563EB;            /* 单色默认蓝，容器可覆盖 */
  flex: 0 0 auto;
}
.section-dark .i3d {
  color: #7198ef;
}
/* 各图标容器内尺寸（覆盖原 font-size 驱动的 emoji 尺寸） */
.feature-card .card-icon .i3d { width: 30px; height: 30px; }
.pain-icon .i3d { width: 34px; height: 34px; }
.case-detail-top .cdt-icon .i3d { width: 54px; height: 54px; }
.industry-card .ic-icon .i3d { width: 40px; height: 40px; }
.about-visual-card .avc-icon .i3d { width: 26px; height: 26px; }
.honor-card .hc-icon .i3d { width: 30px; height: 30px; }
.value-card .vc-icon .i3d { width: 34px; height: 34px; }
.service-region .sr-icon .i3d { width: 30px; height: 30px; }
.contact-card .cc-icon .i3d { width: 30px; height: 30px; }
.scenario-card-left .sc-icon .i3d { width: 24px; height: 24px; color: #ffffff8f;}
.stack-card .sc-icon .i3d { width: 34px; height: 34px; }
.cert-card .cert-icon .i3d { width: 30px; height: 30px; }
.tm-card .tm-icon .i3d { width: 30px; height: 30px; color: var(--weaver-blue); }
.cta-contact-item .icon .i3d { width: 22px; height: 22px; color: #fff; }
.section-tag .i3d { width: 16px; height: 16px; vertical-align: -3px; }
.solution-orbit-item .oi-icon .i3d { width: 22px; height: 22px; color: #557dd6;}
/* 方案中枢徽标：底色调深，使蓝色渐变盾牌在其上清晰可见 */
.solution-ring-center { background: linear-gradient(135deg, #1E40AF, #0B2A6B) !important; }
.solution-ring-center .icon .i3d { width: 44px; height: 44px; color: #fff; }
/* FAQ 折叠加号：跟随父级颜色（默认蓝，展开为白），不用渐变与投影 */
.faq-icon .i3d { width: 16px; height: 16px; color: inherit; stroke: currentColor; fill: none; }