/* ==== index.html ==== */
/* ============ Hero ============ */
  .hero { padding: 76px 0 84px; position: relative; overflow: hidden; }
  .hero-grid { display: grid; grid-template-columns: 1.06fr .94fr; gap: 56px; align-items: center; }
  .hero .h1 { margin: 20px 0 18px; }
  .hero .lead { max-width: 520px; }
  .hero-cta { display: flex; gap: 14px; margin-top: 32px; flex-wrap: wrap; }

  .hero-stats { display: flex; gap: 38px; margin-top: 46px; padding-top: 30px; border-top: 1px solid var(--line); }
  .hero-stats .num { font-family: var(--mono); font-size: 27px; font-weight: 700; color: var(--t0); }
  .hero-stats .num span { font-size: 14px; color: var(--cyan); }
  .hero-stats .lbl { font-size: 12px; color: var(--t2); }

  /* ---- Hero 动态主视觉（Canvas「数据星核」）----
     结构： .hero > .hero-fx(canvas) + .hero-shade + .container */
  .hero-fx {
    position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
    -webkit-mask-image: radial-gradient(100% 100% at 60% 48%, #000 28%, rgba(0, 0, 0, .52) 60%, transparent 98%);
    mask-image: radial-gradient(100% 100% at 60% 48%, #000 28%, rgba(0, 0, 0, .52) 60%, transparent 98%);
  }
  .hero-fx canvas { display: block; width: 100%; height: 100%; }
  /* 遮罩：左侧压暗保文案对比度 + 上下边缘淡出，避免出现硬边 */
  .hero-shade {
    position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background:
      linear-gradient(90deg,
        rgba(4, 7, 15, .92) 0%, rgba(4, 7, 15, .68) 24%,
        rgba(4, 7, 15, .22) 45%, rgba(4, 7, 15, 0) 62%),
      linear-gradient(180deg,
        rgba(4, 7, 15, .34) 0%, rgba(4, 7, 15, 0) 9%,
        rgba(4, 7, 15, 0) 70%, rgba(4, 7, 15, .30) 88%,
        rgba(4, 7, 15, .70) 100%);
  }
  .hero > .container { position: relative; z-index: 2; }

  /* 代码窗口视觉（玻璃拟态，让背后的星核透出来） */
  .codewin {
    border-radius: var(--r-lg); border: 1px solid var(--line-2);
    background: linear-gradient(160deg, rgba(12, 20, 42, .92), rgba(6, 10, 22, .95));
    backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
    box-shadow: 0 30px 70px rgba(0, 0, 0, .6), 0 0 0 1px rgba(0, 229, 255, .08);
    overflow: hidden; position: relative;
  }
  .codewin::before {
    content: ""; position: absolute; inset: -1px; border-radius: var(--r-lg); pointer-events: none;
    background: linear-gradient(140deg, rgba(0, 229, 255, .5), transparent 35%, transparent 65%, rgba(124, 77, 255, .5));
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor; mask-composite: exclude; padding: 1px;
  }
  .cw-bar { display: flex; align-items: center; gap: 7px; padding: 13px 16px; border-bottom: 1px solid var(--line); background: rgba(8, 13, 28, .8); }
  .cw-dot { width: 10px; height: 10px; border-radius: 50%; }
  .cw-file { margin-left: 10px; font-family: var(--mono); font-size: 11.5px; color: var(--t2); }
  .cw-body { padding: 20px 20px 26px; font-family: var(--mono); font-size: 12.4px; line-height: 2.05; }
  .cw-body .ln { display: flex; gap: 14px; }
  .cw-body .no { color: var(--t3); user-select: none; width: 16px; text-align: right; flex-shrink: 0; }
  .k { color: #7C9CFF; } .s { color: #29F5B0; } .f { color: var(--cyan); }
  .c { color: #4A597C; } .p { color: #FF7CB8; }

  .float-chip {
    position: absolute; display: flex; align-items: center; gap: 9px;
    padding: 10px 15px; border-radius: 12px; font-size: 12.5px;
    background: rgba(10, 17, 36, .94); border: 1px solid var(--line-cyan);
    box-shadow: 0 14px 34px rgba(0, 0, 0, .55); backdrop-filter: blur(10px);
  }
  .fc-1 { bottom: 62px; left: -30px; }
  .fc-2 { top: 52px; right: -26px; }

  /* 服务能力卡 */
  .svc { padding: 28px 26px; }
  .svc .h3 { margin: 18px 0 10px; }
  .svc .lead { font-size: 13px; }
  .svc-list { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 7px; }
  .svc-num { position: absolute; top: 20px; right: 22px; font-family: var(--mono); font-size: 34px; font-weight: 700; color: rgba(120, 170, 255, .1); }

  /* 技术栈 */
  .stack-wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
  .stack-item { display: flex; align-items: center; gap: 13px; padding: 15px 18px; border-radius: var(--r); background: rgba(10, 17, 36, .6); border: 1px solid var(--line); }
  .stack-item:hover { border-color: var(--line-cyan); }
  .bar { height: 4px; border-radius: 999px; background: rgba(120, 170, 255, .12); overflow: hidden; width: 100%; margin-top: 7px; }
  .bar i { display: block; height: 100%; background: var(--grad); border-radius: 999px; }

  /* 案例卡 */
  .case { padding: 0; overflow: hidden; }
  .case .mock { border-radius: 0; border: none; border-bottom: 1px solid var(--line); height: 168px; }
  .case-body { padding: 20px 22px 24px; }
  .case-body .h4 { margin-bottom: 8px; }
  .case-meta { display: flex; align-items: center; gap: 12px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); font-size: 12px; color: var(--t2); }

  /* 流程条 */
  .flow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; position: relative; }
  .flow-step { text-align: center; padding: 0 12px; position: relative; }
  .flow-step .circle {
    width: 58px; height: 58px; margin: 0 auto 16px; border-radius: 50%; display: grid; place-items: center;
    background: rgba(10, 17, 36, .9); border: 1px solid var(--line-cyan); color: var(--cyan);
    font-family: var(--mono); font-weight: 700; font-size: 16px; position: relative; z-index: 2;
    box-shadow: 0 0 0 6px rgba(0, 229, 255, .05);
  }
  .flow-step::after {
    content: ""; position: absolute; top: 29px; left: 50%; right: -50%; height: 1px;
    background: linear-gradient(90deg, var(--line-cyan), transparent); z-index: 1;
  }
  .flow-step:last-child::after { display: none; }
  .flow-step .h4 { font-size: 14.5px; margin-bottom: 5px; }
  .flow-step p { font-size: 12px; color: var(--t2); line-height: 1.6; }

  /* 合作方 */
  .partners { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
  .partner {
    height: 74px; border-radius: var(--r); border: 1px solid var(--line);
    background: rgba(10, 17, 36, .5); display: grid; place-items: center;
    font-family: var(--mono); font-size: 12.5px; color: var(--t2); letter-spacing: 1px; transition: .25s;
  }
  .partner:hover { border-color: var(--line-cyan); color: var(--cyan); background: rgba(0, 229, 255, .05); }

  /* CTA */
  .cta {
    border-radius: var(--r-xl); padding: 54px 56px; position: relative; overflow: hidden;
    background: linear-gradient(120deg, rgba(0, 229, 255, .1), rgba(124, 77, 255, .14)), rgba(8, 14, 30, .8);
    border: 1px solid var(--line-2);
  }
  .cta::before {
    content: ""; position: absolute; right: -80px; top: -80px; width: 340px; height: 340px; border-radius: 50%;
    background: radial-gradient(circle, rgba(0, 229, 255, .22), transparent 68%);
  }
  @media (max-width: 1080px) {
    .hero-grid, .stack-wrap { grid-template-columns: 1fr; }
    .flow { grid-template-columns: repeat(2, 1fr); gap: 30px 0; }
    .flow-step::after { display: none; }
    .partners { grid-template-columns: repeat(3, 1fr); }
    .fc-1, .fc-2 { display: none; }
    .cta { padding: 34px 26px; }
    /* 单列排布后文案占满整行，改为纵向压暗以保证对比度 */
    .hero-shade {
      background: linear-gradient(180deg,
        rgba(4, 7, 15, .80) 0%, rgba(4, 7, 15, .58) 34%,
        rgba(4, 7, 15, .34) 62%, rgba(4, 7, 15, .74) 100%);
    }
  }

/* ==== products.html ==== */
/* ============ 搜索区 ============ */
  .search-hero {
    padding: 46px 0 34px;
    background:
      radial-gradient(700px 300px at 50% -30%, rgba(0, 229, 255, .16), transparent 70%),
      linear-gradient(180deg, rgba(6, 11, 24, .9), transparent);
    border-bottom: 1px solid var(--line);
  }
  .search-bar {
    display: flex; align-items: center; gap: 10px; margin-top: 22px;
    padding: 8px 8px 8px 20px; border-radius: 999px;
    background: rgba(8, 14, 30, .92); border: 1px solid var(--line-cyan);
    box-shadow: 0 0 0 5px rgba(0, 229, 255, .05), 0 18px 44px rgba(0, 0, 0, .45);
    max-width: 780px;
  }
  .search-bar input { flex: 1; background: none; border: none; outline: none; font-size: 14.5px; }
  .search-bar input::placeholder { color: var(--t3); }
  .search-bar .divider { width: 1px; height: 22px; background: var(--line-2); }
  .hot-words { display: flex; align-items: center; gap: 9px; margin-top: 16px; flex-wrap: wrap; font-size: 12.5px; }
  .hot-words .w { color: var(--t2); padding: 3px 11px; border-radius: 999px; background: rgba(120, 170, 255, .07); border: 1px solid var(--line); }
  .hot-words .w:hover { color: var(--cyan); border-color: var(--line-cyan); }
  .hot-words .w.on { color: var(--cyan); border-color: var(--line-cyan); background: rgba(0, 229, 255, .12); }

  /* ============ 布局 ============ */
  .shop { display: grid; grid-template-columns: 244px 1fr; gap: 30px; align-items: start; }

  /* ============ 侧边筛选 ============ */
  .side { position: sticky; top: 88px; display: flex; flex-direction: column; gap: 16px; }
  .fgroup { padding: 20px; }
  .fgroup h4 { font-size: 13px; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
  .fgroup h4::before { content: ""; width: 3px; height: 13px; border-radius: 2px; background: var(--grad); }
  .flist li {
    display: flex; align-items: center; justify-content: space-between;
    padding: 8px 0; font-size: 13px; color: var(--t1); cursor: pointer; transition: .2s;
  }
  .flist li:hover, .flist li.on { color: var(--cyan); }
  .flist li.on { font-weight: 600; }
  .flist .cnt { font-family: var(--mono); font-size: 11px; color: var(--t3); }
  .flist li.on .cnt { color: var(--cyan); }
  .check { display: flex; align-items: center; gap: 9px; padding: 7px 0; font-size: 13px; color: var(--t1); cursor: pointer; }
  .check i {
    width: 15px; height: 15px; border-radius: 4px; border: 1px solid var(--line-2);
    display: grid; place-items: center; flex-shrink: 0; transition: .2s;
  }
  .check.on i { background: var(--grad); border-color: transparent; }
  .check.on i::after { content: "✓"; font-size: 10px; color: #04070F; font-weight: 900; }
  .tags-cloud { display: flex; flex-wrap: wrap; gap: 7px; }
  .tags-cloud span { font-size: 11.5px; padding: 4px 10px; border-radius: 6px; background: rgba(120, 170, 255, .08); border: 1px solid var(--line); color: var(--t1); cursor: pointer; }
  .tags-cloud span:hover, .tags-cloud span.on { border-color: var(--line-cyan); color: var(--cyan); background: rgba(0, 229, 255, .1); }
  .range { margin-top: 8px; }
  .range input[type=range] { width: 100%; accent-color: #00E5FF; }
  .range-val { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 11.5px; color: var(--t2); }

  /* ============ 工具条 ============ */
  .toolbar {
    display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
    padding: 14px 20px; border-radius: var(--r); margin-bottom: 20px;
    background: var(--panel); border: 1px solid var(--line);
  }
  .sorts { display: flex; gap: 4px; }
  .sorts button {
    padding: 7px 15px; border-radius: 999px; font-size: 13px; cursor: pointer;
    background: transparent; border: 1px solid transparent; color: var(--t1); transition: .2s;
  }
  .sorts button:hover { color: var(--t0); background: rgba(120, 170, 255, .08); }
  .sorts button.on { background: var(--grad); color: #04070F; font-weight: 650; }

  /* ============ 产品网格 ============ */
  .plist { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .pcard { display: flex; flex-direction: column; padding: 0; overflow: hidden; position: relative; }
  .pcard .mock { height: 158px; border-radius: 0; border: none; border-bottom: 1px solid var(--line); }
  .pcard .mock .badge { position: absolute; top: 12px; left: 12px; z-index: 3; }
  .pcard .fav {
    position: absolute; top: 12px; right: 12px; z-index: 3; width: 30px; height: 30px;
    border-radius: 9px; display: grid; place-items: center; font-size: 13px;
    background: rgba(6, 10, 22, .8); border: 1px solid var(--line-2); color: var(--t2); cursor: pointer;
  }
  .pcard .fav:hover { color: var(--magenta); border-color: rgba(255, 46, 147, .5); }
  .pcard .fav.on { color: var(--magenta); border-color: rgba(255, 46, 147, .6); }
  .pbody { padding: 18px 20px 20px; display: flex; flex-direction: column; flex: 1; }
  .pbody h4 { font-size: 15.5px; margin-bottom: 7px; line-height: 1.45; }
  .pbody .desc { font-size: 12.5px; color: var(--t2); line-height: 1.65; flex: 1; }
  .pmeta { display: flex; flex-wrap: wrap; gap: 6px; margin: 13px 0; }
  .pfoot { display: flex; align-items: flex-end; justify-content: space-between; padding-top: 14px; border-top: 1px solid var(--line); gap: 10px; }
  .price { font-family: var(--mono); font-size: 19px; font-weight: 700; color: var(--cyan); }
  .price small { font-size: 11px; color: var(--t2); font-weight: 400; }
  .sold { font-size: 11.5px; color: var(--t3); }
  .pactions { display: flex; gap: 7px; margin-top: 14px; }
  .pactions .btn { flex: 1; padding: 8px 10px; font-size: 12.5px; }

  /* ============ 分页 ============ */
  .pager { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: 40px; }
  .pager a, .pager span {
    min-width: 36px; height: 36px; padding: 0 11px; border-radius: 10px; display: grid; place-items: center;
    font-size: 13px; font-family: var(--mono); border: 1px solid var(--line-2); color: var(--t1); background: rgba(8, 14, 30, .7);
  }
  .pager a:hover { border-color: var(--line-cyan); color: var(--cyan); }
  .pager .on { background: var(--grad); color: #04070F; border-color: transparent; font-weight: 700; }
  .pager .dis { opacity: .35; pointer-events: none; }

  @media (max-width: 1080px) {
    .shop { grid-template-columns: 1fr; }
    .side { position: static; }
    .plist { grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 720px) { .plist { grid-template-columns: 1fr; } }

/* ==== product-detail.html ==== */
.detail-head { padding: 30px 0 46px; }
  .detail-grid { display: grid; grid-template-columns: 1.02fr .98fr; gap: 44px; align-items: start; }

  /* 图库 */
  .gallery .mock.main { height: 380px; border-radius: var(--r-lg); }
  .thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 12px; }
  .thumbs .mock { height: 78px; border-radius: var(--r-sm); cursor: pointer; transition: .2s; }
  .thumbs .mock.on { border-color: var(--cyan); box-shadow: 0 0 0 2px rgba(0, 229, 255, .25); }

  /* 信息区 */
  .p-title { font-size: 30px; font-weight: 750; line-height: 1.32; margin: 14px 0 12px; }
  .price-box {
    padding: 22px 24px; border-radius: var(--r); margin: 20px 0;
    background: linear-gradient(120deg, rgba(0, 229, 255, .1), rgba(124, 77, 255, .12));
    border: 1px solid var(--line-2);
  }
  .price-box .big { font-family: var(--mono); font-size: 34px; font-weight: 700; color: var(--cyan); line-height: 1.1; }
  .price-box .big small { font-size: 14px; color: var(--t1); font-weight: 400; }
  .price-box .old { font-size: 13px; color: var(--t3); text-decoration: line-through; margin-left: 10px; }

  .spec { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .spec-item { padding: 13px 16px; border-radius: var(--r-sm); background: rgba(8, 14, 30, .7); border: 1px solid var(--line); }
  .spec-item .k2 { font-size: 11.5px; color: var(--t2); margin-bottom: 3px; }
  .spec-item .v2 { font-size: 13.5px; font-weight: 600; color: var(--t0); }

  .feat-line { display: flex; align-items: flex-start; gap: 10px; padding: 6px 0; font-size: 13.2px; color: var(--t1); }
  .feat-line svg { flex-shrink: 0; margin-top: 4px; }

  .buy-card { position: sticky; top: 88px; }
  .buy-card .h4 { margin-bottom: 14px; }
  .buy-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; font-size: 13px; color: var(--t1); border-bottom: 1px dashed var(--line); }
  .buy-row:last-of-type { border-bottom: none; }

  /* 详情 Tab */
  .tabs { display: flex; gap: 6px; border-bottom: 1px solid var(--line); margin-bottom: 34px; overflow-x: auto; }
  .tabs button {
    padding: 14px 22px; background: none; border: none; cursor: pointer; font-size: 14.5px;
    color: var(--t2); border-bottom: 2px solid transparent; white-space: nowrap; transition: .2s; font-weight: 500;
  }
  .tabs button:hover { color: var(--t0); }
  .tabs button.on { color: var(--cyan); border-bottom-color: var(--cyan); font-weight: 650; }

  .arch-layer {
    display: flex; align-items: center; gap: 16px; padding: 18px 22px; border-radius: var(--r);
    background: rgba(10, 17, 36, .7); border: 1px solid var(--line); margin-bottom: 12px;
  }
  .arch-layer .n { font-family: var(--mono); font-size: 12px; color: var(--cyan); width: 62px; flex-shrink: 0; letter-spacing: 1px; }
  .arch-layer .items { display: flex; flex-wrap: wrap; gap: 8px; }

  .fn-item { display: flex; gap: 14px; padding: 20px; border-radius: var(--r); background: rgba(10, 17, 36, .6); border: 1px solid var(--line); }
  .deliver { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-radius: var(--r-sm); background: rgba(41, 245, 176, .06); border: 1px solid rgba(41, 245, 176, .22); font-size: 13.5px; }

  .faq { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; }
  .faq .q { padding: 17px 22px; font-size: 14px; font-weight: 600; display: flex; justify-content: space-between; align-items: center; background: rgba(10, 17, 36, .55); border-bottom: 1px solid var(--line); cursor: pointer; }
  .faq .a { padding: 16px 22px; font-size: 13px; color: var(--t1); background: rgba(6, 11, 24, .5); border-bottom: 1px solid var(--line); line-height: 1.85; }
  .faq .q:last-of-type { border-bottom: none; }

  @media (max-width: 1080px) {
    .detail-grid { grid-template-columns: 1fr; }
    .buy-card { position: static; }
  }

/* ==== about.html ==== */
.intro-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 52px; align-items: center; }
  .stat-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; background: rgba(8, 14, 30, .6); }
  .stat-strip > div { padding: 28px 24px; border-right: 1px solid var(--line); text-align: center; }
  .stat-strip > div:last-child { border-right: none; }
  .stat-strip .n { font-family: var(--mono); font-size: 32px; font-weight: 700; color: var(--cyan); }
  .stat-strip .n small { font-size: 14px; }
  .stat-strip .t { font-size: 12.5px; color: var(--t2); margin-top: 4px; }

  /* 时间轴 */
  .timeline { position: relative; padding-left: 34px; }
  .timeline::before { content: ""; position: absolute; left: 8px; top: 8px; bottom: 8px; width: 1px; background: linear-gradient(180deg, var(--cyan), rgba(124, 77, 255, .6), transparent); }
  .tl-item { position: relative; padding-bottom: 34px; }
  .tl-item::before { content: ""; position: absolute; left: -34px; top: 6px; width: 17px; height: 17px; border-radius: 50%; background: var(--bg-0); border: 2px solid var(--cyan); box-shadow: 0 0 12px rgba(0, 229, 255, .5); }
  .tl-year { font-family: var(--mono); font-size: 13px; color: var(--cyan); letter-spacing: 1.5px; margin-bottom: 5px; }
  .tl-item .h4 { margin-bottom: 6px; }

  /* 团队 */
  .member { padding: 24px; text-align: center; }
  .avatar {
    width: 76px; height: 76px; border-radius: 50%; margin: 0 auto 14px;
    background: linear-gradient(140deg, rgba(0, 229, 255, .22), rgba(124, 77, 255, .28));
    border: 1px solid var(--line-2); display: grid; place-items: center;
    font-family: var(--mono); font-size: 20px; color: var(--t0); font-weight: 700;
  }
  .honor { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-radius: var(--r); background: rgba(10, 17, 36, .6); border: 1px solid var(--line); font-size: 13px; }

  .value-card { padding: 26px; }
  .value-card .h4 { margin: 16px 0 8px; }
  @media (max-width: 1080px) {
    .intro-grid { grid-template-columns: 1fr; gap: 30px; }
    .stat-strip { grid-template-columns: repeat(2, 1fr); }
    .stat-strip > div:nth-child(2) { border-right: none; }
  }

/* ==== process.html ==== */
/* 阶段卡 */
  .phase { display: grid; grid-template-columns: 92px 1fr; gap: 26px; position: relative; padding-bottom: 30px; }
  .phase:last-child { padding-bottom: 0; }
  .phase::before {
    content: ""; position: absolute; left: 45px; top: 76px; bottom: 0; width: 1px;
    background: linear-gradient(180deg, rgba(0, 229, 255, .5), rgba(0, 229, 255, .06));
  }
  .phase:last-child::before { display: none; }
  .phase-no {
    width: 92px; height: 92px; border-radius: 22px; display: grid; place-items: center;
    background: linear-gradient(140deg, rgba(0, 229, 255, .16), rgba(124, 77, 255, .2));
    border: 1px solid var(--line-cyan); position: relative; z-index: 2;
    font-family: var(--mono); font-size: 26px; font-weight: 700; color: var(--cyan);
    box-shadow: 0 0 0 7px rgba(0, 229, 255, .04);
  }
  .phase-card { padding: 28px 30px; }
  .phase-card .top { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
  .phase-card h3 { font-size: 21px; font-weight: 700; }
  .deliv-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
  .deliv-list div { display: flex; align-items: center; gap: 9px; font-size: 13px; color: var(--t1); }
  .deliv-list svg { flex-shrink: 0; }

  /* 甘特 */
  .gantt { border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; background: rgba(8, 14, 30, .6); }
  .gantt-row { display: grid; grid-template-columns: 150px 1fr; align-items: center; border-bottom: 1px solid var(--line); }
  .gantt-row:last-child { border-bottom: none; }
  .gantt-row .gl { padding: 16px 20px; font-size: 13px; color: var(--t1); border-right: 1px solid var(--line); }
  .gantt-row .gt { padding: 16px 20px; }
  .gbar { height: 22px; border-radius: 999px; background: var(--grad); position: relative; box-shadow: 0 0 16px rgba(0, 229, 255, .28); }
  .gbar span { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-family: var(--mono); font-size: 11px; color: #04070F; font-weight: 700; }
  .gbar.alt { background: linear-gradient(90deg, #7C4DFF, #FF2E93); box-shadow: 0 0 16px rgba(124, 77, 255, .3); }

  /* 保障 */
  .guar { display: flex; gap: 14px; padding: 22px; }

  .faq { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; }
  .faq .q { padding: 17px 22px; font-size: 14px; font-weight: 600; display: flex; justify-content: space-between; align-items: center; background: rgba(10, 17, 36, .55); border-bottom: 1px solid var(--line); cursor: pointer; }
  .faq .a { padding: 16px 22px; font-size: 13px; color: var(--t1); background: rgba(6, 11, 24, .5); border-bottom: 1px solid var(--line); line-height: 1.85; }
  .faq .q:last-of-type { border-bottom: none; }

  @media (max-width: 720px) {
    .phase { grid-template-columns: 1fr; gap: 14px; }
    .phase::before { display: none; }
    .deliv-list { grid-template-columns: 1fr; }
    .gantt-row { grid-template-columns: 96px 1fr; }
  }

/* ==== message.html ==== */
.msg-grid { display: grid; grid-template-columns: 1.55fr 1fr; gap: 30px; align-items: start; }
  .form-card { padding: 36px 38px; }

  /* 步骤条 */
  .steps { display: flex; align-items: center; gap: 0; margin-bottom: 34px; }
  .step { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--t2); }
  .step b {
    width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center;
    font-family: var(--mono); font-size: 12px; border: 1px solid var(--line-2); color: var(--t2);
  }
  .step.on b { background: var(--grad); border-color: transparent; color: #04070F; font-weight: 700; }
  .step.on { color: var(--t0); font-weight: 600; }
  .step-line { flex: 1; height: 1px; background: var(--line-2); margin: 0 14px; min-width: 20px; }

  /* 选项按钮组 */
  .chips { display: flex; flex-wrap: wrap; gap: 9px; }
  .chip {
    padding: 10px 18px; border-radius: 10px; font-size: 13px; cursor: pointer;
    background: rgba(8, 14, 30, .75); border: 1px solid var(--line-2); color: var(--t1); transition: .2s;
    display: flex; align-items: center; gap: 8px;
  }
  .chip:hover { border-color: var(--line-cyan); color: var(--t0); }
  .chip.on { background: linear-gradient(120deg, rgba(0, 229, 255, .18), rgba(124, 77, 255, .2)); border-color: var(--cyan); color: var(--cyan); font-weight: 600; }
  .chip.on::before { content: "✓"; font-size: 11px; }

  /* 预算滑杆 */
  .budget-scale { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 11px; color: var(--t3); margin-top: 6px; }
  .sel-budget { font-family: var(--mono); color: var(--cyan); font-size: 15px; font-weight: 700; }

  /* 上传区 */
  .upload {
    border: 1px dashed var(--line-2); border-radius: var(--r); padding: 28px; text-align: center;
    background: rgba(8, 14, 30, .5); cursor: pointer; transition: .2s;
  }
  .upload:hover { border-color: var(--cyan); background: rgba(0, 229, 255, .05); }
  .upload .ico { margin: 0 auto 12px; }

  /* 右侧 */
  .side-card { padding: 26px; }
  .flow-mini li { display: flex; gap: 12px; padding: 12px 0; border-bottom: 1px dashed var(--line); }
  .flow-mini li:last-child { border-bottom: none; }
  .flow-mini .n2 { font-family: var(--mono); font-size: 12px; color: var(--cyan); flex-shrink: 0; width: 20px; }
  .contact-quick { display: flex; align-items: center; gap: 13px; padding: 14px; border-radius: var(--r); background: rgba(10, 17, 36, .6); border: 1px solid var(--line); }
  .contact-quick:hover { border-color: var(--line-cyan); }
  @media (max-width: 1080px) { .msg-grid { grid-template-columns: 1fr; } .form-card { padding: 26px 20px; } }

/* ==== contact.html ==== */
.contact-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
  .cc { padding: 28px 24px; text-align: center; }
  .cc .ico { margin: 0 auto 16px; }
  .cc .h4 { margin-bottom: 8px; }
  .cc .val { font-family: var(--mono); font-size: 16px; color: var(--cyan); font-weight: 600; word-break: break-all; }
  .cc .sub { font-size: 12px; color: var(--t2); margin-top: 6px; }

  .map-wrap { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line-2); position: relative; }
  .map-mock {
    height: 420px; display: grid; place-items: center; position: relative;
    background:
      radial-gradient(circle at 62% 42%, rgba(0, 229, 255, .18), transparent 42%),
      linear-gradient(160deg, #071021, #0B1226);
  }
  .map-mock::before {
    content: ""; position: absolute; inset: 0;
    background-image:
      linear-gradient(rgba(120, 170, 255, .07) 1px, transparent 1px),
      linear-gradient(90deg, rgba(120, 170, 255, .07) 1px, transparent 1px);
    background-size: 40px 40px;
  }
  .map-pin {
    position: relative; z-index: 3; text-align: center;
  }
  .map-pin .ring {
    width: 74px; height: 74px; border-radius: 50%; margin: 0 auto 14px;
    border: 2px solid var(--cyan); display: grid; place-items: center;
    box-shadow: 0 0 0 12px rgba(0, 229, 255, .08), 0 0 30px rgba(0, 229, 255, .4);
    background: rgba(0, 229, 255, .08);
  }
  .map-bar {
    position: absolute; left: 20px; bottom: 20px; right: 20px; z-index: 4;
    display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
    padding: 16px 22px; border-radius: var(--r); background: rgba(6, 11, 24, .92);
    border: 1px solid var(--line-2); backdrop-filter: blur(12px);
  }

  /* 分公司 */
  .branch { padding: 22px; }
  .branch .h4 { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; }
  .branch .row { display: flex; gap: 9px; font-size: 12.5px; color: var(--t2); padding: 3px 0; }

  /* 二维码 */
  .qr-box {
    width: 118px; height: 118px; border-radius: var(--r); flex-shrink: 0;
    background: repeating-conic-gradient(#0B1226 0% 25%, #16233F 0% 50%) 0 0/12px 12px;
    border: 1px solid var(--line-2); display: grid; place-items: center;
  }
  @media (max-width: 1080px) { .contact-cards { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 720px) { .contact-cards { grid-template-columns: 1fr; } }

/* ==== login.html ==== */
body { overflow: hidden; }
  .auth { display: grid; grid-template-columns: 1.05fr .95fr; min-height: 100vh; }

  /* 左侧品牌面板 */
  .auth-left {
    position: relative; padding: 54px 60px; display: flex; flex-direction: column;
    border-right: 1px solid var(--line);
    background: radial-gradient(700px 500px at 20% 10%, rgba(0, 229, 255, .14), transparent 60%),
                radial-gradient(600px 460px at 80% 90%, rgba(124, 77, 255, .18), transparent 62%),
                rgba(4, 7, 15, .5);
    overflow: hidden;
  }
  .auth-left .brand-name { font-size: 20px; }
  .auth-left .brand-mark { width: 56px; height: 36px; }

  /* 左侧品牌文案区（沿用上一版：眉题 + 主标题 + 说明 + 能力清单） */
  .auth-copy { margin: auto 0; position: relative; z-index: 2; }
  .auth-copy .h1 { font-size: 40px; margin: 18px 0 16px; }
  .auth-feats { margin-top: 38px; display: flex; flex-direction: column; gap: 14px; }
  .auth-feat { display: flex; align-items: center; gap: 12px; font-size: 13.5px; color: var(--t1); }
  .auth-feat .ico-sm { flex-shrink: 0; }

  /* 浮动的科技图形 */
  .orb { position: absolute; border-radius: 50%; filter: blur(2px); opacity: .5; border: 1px solid rgba(0, 229, 255, .3); }
  .orb.o1 { width: 300px; height: 300px; right: -100px; top: 8%; }
  .orb.o2 { width: 160px; height: 160px; right: 70px; top: 44%; border-color: rgba(124, 77, 255, .4); }
  .orb.o3 { width: 420px; height: 420px; left: -180px; bottom: -140px; border-color: rgba(255, 46, 147, .22); }
  .orb.o4 { width: 90px; height: 90px; right: 150px; bottom: 20%; border-color: rgba(41, 245, 176, .35); }

  /* 右侧表单 */
  .auth-right { display: grid; place-items: center; padding: 40px; }
  .auth-box { width: 100%; max-width: 396px; }
  .tabs2 { display: flex; gap: 30px; border-bottom: 1px solid var(--line); margin-bottom: 30px; }
  .tabs2 button {
    padding: 0 0 14px; background: none; border: none; cursor: pointer; font-size: 17px;
    font-weight: 600; color: var(--t2); border-bottom: 2px solid transparent; transition: .2s;
  }
  .tabs2 button:hover { color: var(--t0); }
  .tabs2 button.on { color: var(--t0); border-bottom-color: var(--cyan); }

  .input-group { position: relative; }
  .input-group .input { padding-left: 44px; }
  .input-group .ig-ico {
    position: absolute; left: 15px; top: 50%; transform: translateY(-50%);
    color: var(--t2); pointer-events: none; display: flex;
  }
  .code-row { display: grid; grid-template-columns: 1fr 122px; gap: 10px; }
  .btn-code { padding: 12px 0; font-size: 13px; white-space: nowrap; }
  .btn-code[disabled] { opacity: .6; cursor: default; color: var(--t2); border-color: var(--line); }

  .switch-code { color: var(--cyan); cursor: pointer; font-size: 12.5px; }
  .switch-code:hover { text-decoration: underline; }

  .third { display: flex; gap: 12px; }
  .third a {
    flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 11px; border-radius: var(--r-sm); border: 1px solid var(--line-2);
    background: rgba(255, 255, 255, .03); font-size: 13px; color: var(--t1); transition: .2s;
  }
  .third a:hover { border-color: var(--line-cyan); color: var(--cyan); }

  .divider-text { display: flex; align-items: center; gap: 14px; margin: 26px 0; color: var(--t3); font-size: 12px; }
  .divider-text::before, .divider-text::after { content: ""; flex: 1; height: 1px; background: var(--line); }

  .auth-foot { margin-top: 30px; text-align: center; font-size: 12.5px; color: var(--t2); }

  @media (max-width: 1080px) {
    body { overflow: auto; }
    .auth { grid-template-columns: 1fr; }
    .auth-left { display: none; }
  }