/* ============================================================================
   门户专属样式  (assets/portal.css)
   ----------------------------------------------------------------------------
   色板 / 基础 / 通用组件（按钮·输入·徽章·表格·空态·页脚）见 assets/yuzu.css
   本文件只放门户自己的布局；下面把门户沿用的旧变量名指向统一令牌。
   ========================================================================= */
:root{
  --border: var(--stroke);
  --border-acc: var(--stroke-acc);
  --r: var(--r-lg);
  --r2: var(--r-xl);
  --good: var(--ok);
  --on: #fff;
}
/* ============================================================
     星野柚羽 主题 · 综合门户
     冰蓝 / 珍珠白 / 深藏青 / 腮红粉 / 暖金 —— 取自人设设定集 v2.3
     冰蓝眼眸 · 银白猫耳猫尾 · 深蓝水手服 · 易脸红 · 治愈系
     ============================================================ */
  :root{
    --bg:#F4F9FF;--bg2:#E9F4FF;--tint:#EAF4FE;--surface:#FFFFFF;
    --t1:#16233F;--t2:#4C5F80;--t3:#8FA3BF;
    --acc:#4FB3E8;--acc2:#8AD9F8;--acc-deep:#2A7FB8;
    --pink:#FFB7C9;--gold:#F7C86B;--lav:#C9B6FF;
    --good:#37B98B;--bad:#E8707F;--warn:#E0A93C;
    --border:rgba(22,35,63,.10);--border-acc:rgba(79,179,232,.32);
    --r:18px;--r2:24px;
    --code-bg:#111D36;--code-fg:#DCEBFA;
    --sh:0 10px 30px -20px rgba(43,127,184,.55);
    --sh-lg:0 26px 56px -30px rgba(43,127,184,.62);
    --font:-apple-system,'SF Pro Display','PingFang SC','HarmonyOS Sans SC','Segoe UI','Microsoft YaHei',sans-serif;
    --mono:'SF Mono','JetBrains Mono',Consolas,monospace;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{
    font-family:var(--font);color:var(--t2);line-height:1.65;font-size:16px;
    -webkit-font-smoothing:antialiased;overflow-x:hidden;position:relative;
    background:
      radial-gradient(1200px 620px at 6% -8%,rgba(138,217,248,.45),transparent 62%),
      radial-gradient(900px 520px at 97% 0%,rgba(255,183,201,.32),transparent 60%),
      radial-gradient(900px 640px at 50% 108%,rgba(201,182,255,.22),transparent 62%),
      linear-gradient(180deg,var(--bg),var(--bg2) 55%,var(--bg));
    background-attachment:fixed;
  }
  body::before{
    content:'';position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.7;
    background-image:
      radial-gradient(1.6px 1.6px at 12% 14%,rgba(79,179,232,.75),transparent 60%),
      radial-gradient(1.4px 1.4px at 28% 30%,rgba(79,179,232,.5),transparent 60%),
      radial-gradient(1.8px 1.8px at 67% 10%,rgba(255,183,201,.8),transparent 60%),
      radial-gradient(1.3px 1.3px at 85% 26%,rgba(79,179,232,.55),transparent 60%),
      radial-gradient(1.5px 1.5px at 44% 6%,rgba(247,200,107,.7),transparent 60%),
      radial-gradient(1.4px 1.4px at 93% 44%,rgba(201,182,255,.7),transparent 60%);
  }
  a{text-decoration:none;color:inherit}
  .wrap{max-width:1120px;margin:0 auto;padding:0 24px;position:relative;z-index:1}

  /* ── 导航 ── */
  .nav{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.82);
    backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    border-bottom:1px solid var(--border);box-shadow:0 6px 24px -22px rgba(22,35,63,.6)}
  .nav-in{display:flex;align-items:center;justify-content:space-between;height:64px;gap:16px}
  .logo{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--t1);font-size:17px;letter-spacing:.2px;flex:0 0 auto}
  .logo-dot{position:relative;width:22px;height:18px;border-radius:5px;
    background:linear-gradient(135deg,var(--acc),var(--acc2));box-shadow:0 6px 14px -8px rgba(79,179,232,1)}
  .logo-dot::before,.logo-dot::after{content:'';position:absolute;top:-5px;width:0;height:0;
    border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:7px solid var(--acc)}
  .logo-dot::before{left:1px}.logo-dot::after{right:1px}
  .nav-links{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
  .nav-links a{font-size:14px;color:var(--t2);transition:color .2s}
  .nav-links a:hover{color:var(--acc-deep)}
  .live-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 13px;border-radius:999px;
    background:rgba(255,255,255,.9);border:1px solid var(--border-acc);font-size:12.5px;font-weight:700;
    color:var(--acc-deep);box-shadow:var(--sh);white-space:nowrap}
  .live-pill .d{width:8px;height:8px;border-radius:50%;background:var(--t3);transition:background .3s}
  .live-pill.all .d{background:var(--good);box-shadow:0 0 0 3px rgba(55,185,139,.18)}
  .live-pill.part .d{background:var(--warn);box-shadow:0 0 0 3px rgba(224,169,60,.18)}
  .live-pill.down .d{background:var(--bad);box-shadow:0 0 0 3px rgba(232,112,127,.18)}

  /* ── Hero ── */
  .hero{padding:86px 0 54px;position:relative}
  .hero::after{content:'';position:absolute;right:5%;bottom:22px;width:130px;height:130px;opacity:.10;pointer-events:none;
    background:radial-gradient(circle at 30% 62%,var(--acc-deep) 7px,transparent 8px),
               radial-gradient(circle at 50% 56%,var(--acc-deep) 7px,transparent 8px),
               radial-gradient(circle at 70% 62%,var(--acc-deep) 7px,transparent 8px),
               radial-gradient(circle at 50% 84%,var(--acc-deep) 13px,transparent 14px)}
  .eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;
    color:var(--acc-deep);background:rgba(255,255,255,.88);border:1px solid var(--border-acc);
    padding:7px 15px;border-radius:999px;margin-bottom:22px;box-shadow:var(--sh)}
  .hero h1{font-size:clamp(34px,5.2vw,56px);line-height:1.14;font-weight:850;color:var(--t1);letter-spacing:-.02em;max-width:820px}
  .hero h1 em{font-style:normal;background:linear-gradient(120deg,var(--acc-deep),var(--acc) 42%,var(--lav) 72%,var(--gold));
    -webkit-background-clip:text;background-clip:text;color:transparent}
  .hero .sub{margin-top:20px;font-size:17.5px;max-width:620px}
  .quote{margin-top:14px;font-size:14.5px;color:var(--t3)}
  .quote b{color:var(--acc-deep);font-weight:700}
  .hero-actions{margin-top:30px;display:flex;gap:13px;flex-wrap:wrap;align-items:center}
  .b-pri{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,var(--acc),#66C6F0 60%,var(--acc2));
    color:#fff;font-weight:750;font-size:15px;padding:13px 26px;border-radius:999px;border:none;cursor:pointer;
    box-shadow:0 14px 30px -14px rgba(79,179,232,1);transition:transform .22s,box-shadow .22s}
  .b-pri:hover{transform:translateY(-2px);box-shadow:0 20px 38px -14px rgba(79,179,232,1)}
  .b-sec{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.9);color:var(--acc-deep);
    font-weight:700;font-size:15px;padding:13px 26px;border-radius:999px;border:1.5px solid var(--border-acc);
    cursor:pointer;transition:background .2s,border-color .2s}
  .b-sec:hover{background:var(--tint);border-color:var(--acc)}
  .b-pri svg,.b-sec svg{width:16px;height:16px}

  /* ── 实时数据条 ── */
  .stats{margin-top:40px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
  .stat{background:rgba(255,255,255,.82);border:1px solid var(--border);border-radius:var(--r);
    padding:16px 18px;box-shadow:var(--sh);position:relative;overflow:hidden;transition:transform .22s,box-shadow .22s}
  .stat:hover{transform:translateY(-3px);box-shadow:var(--sh-lg)}
  .stat::after{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
    background:linear-gradient(180deg,var(--acc),var(--pink))}
  .stat .k{font-size:12.5px;color:var(--t3);font-weight:600;display:flex;align-items:center;gap:6px}
  .stat .v{font-size:26px;font-weight:850;color:var(--t1);line-height:1.25;font-variant-numeric:tabular-nums;margin-top:2px}
  .stat .v small{font-size:13px;font-weight:600;color:var(--t3);margin-left:3px}
  .stat.loading .v{color:var(--t3)}

  /* ── 区块 ── */
  .sect{padding:64px 0 8px;position:relative}
  .sect-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}
  .sect-head h2{font-size:23px;font-weight:850;color:var(--t1);display:flex;align-items:center;gap:10px}
  .sect-head h2::before{content:'';width:6px;height:20px;border-radius:3px;
    background:linear-gradient(180deg,var(--acc),var(--gold))}
  .sect-head .more{font-size:13px;color:var(--t3)}

  /* ── 分组 ── */
  .group{margin-bottom:34px}
  .group-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
  .group-head .gi{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:15px;
    background:linear-gradient(135deg,rgba(79,179,232,.16),rgba(255,183,201,.22));border:1px solid var(--border-acc)}
  .group-head h3{font-size:16px;font-weight:800;color:var(--t1)}
  .group-head .gc{font-size:12px;font-weight:700;color:var(--acc-deep);background:rgba(79,179,232,.12);
    border:1px solid rgba(79,179,232,.2);border-radius:999px;padding:2px 9px}
  .group-head .gl{flex:1;height:1px;background:linear-gradient(90deg,var(--border-acc),transparent)}

  /* ── 卡片 ── */
  .cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
  .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:24px;
    display:flex;flex-direction:column;gap:11px;position:relative;overflow:hidden;
    box-shadow:0 4px 18px -14px rgba(22,35,63,.5);
    transition:transform .26s cubic-bezier(.28,.11,.32,1),border-color .26s,box-shadow .26s}
  .card::after{content:'';position:absolute;top:-46px;right:-46px;width:130px;height:130px;border-radius:50%;
    background:radial-gradient(circle,rgba(138,217,248,.30),transparent 70%);pointer-events:none}
  .card:hover{transform:translateY(-4px);border-color:var(--border-acc);box-shadow:var(--sh-lg)}
  .card.main{border-top:3px solid transparent;
    background-image:linear-gradient(var(--surface),var(--surface)),linear-gradient(90deg,var(--acc),var(--pink),var(--lav));
    background-origin:border-box;background-clip:padding-box,border-box}
  .card-top{display:flex;align-items:flex-start;gap:12px}
  .ico{width:44px;height:44px;border-radius:13px;background:var(--tint);display:grid;place-items:center;
    color:var(--acc-deep);flex:0 0 auto;transition:transform .26s}
  .card:hover .ico{transform:translateY(-2px) rotate(-3deg)}
  .card.main .ico{background:linear-gradient(135deg,rgba(79,179,232,.18),rgba(255,183,201,.28))}
  .ico svg{width:21px;height:21px}
  .card h3{font-size:17px;font-weight:800;color:var(--t1);display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.35}
  .tag{font-size:11px;font-weight:750;color:var(--acc-deep);background:rgba(79,179,232,.12);
    padding:3px 9px;border-radius:999px;border:1px solid rgba(79,179,232,.2);white-space:nowrap}
  .wip{font-size:11px;font-weight:750;color:#B07A16;background:rgba(247,200,107,.2);
    border:1px solid rgba(247,200,107,.55);border-radius:999px;padding:2px 8px}
  .card p{font-size:13.8px;color:var(--t2);flex:1}
  .card .by{display:flex;align-items:center;gap:6px;font-size:12.3px;color:var(--t3)}
  .card .by svg{width:13px;height:13px;flex:0 0 auto}
  .card .path{font-family:var(--mono);font-size:12.5px;color:var(--acc-deep);background:var(--tint);
    border:1px solid rgba(79,179,232,.16);border-radius:9px;padding:6px 11px;display:inline-block;align-self:flex-start}
  .mini-links{display:flex;gap:8px;flex-wrap:wrap}
  .mini-links a{font-size:12px;color:var(--acc-deep);border:1px solid var(--border-acc);background:rgba(255,255,255,.7);
    border-radius:999px;padding:4px 11px;transition:background .2s}
  .mini-links a:hover{background:var(--tint)}
  /* GitHub 仓库按钮：深色实心，在一排浅色胶囊里最醒目 */
  .mini-links a.gh{display:inline-flex;align-items:center;gap:6px;font-weight:750;color:#fff;
    background:linear-gradient(135deg,#24292F,#3B434D);border-color:transparent;
    box-shadow:0 8px 18px -12px rgba(22,35,63,1);transition:transform .2s,box-shadow .2s}
  .mini-links a.gh:hover{background:linear-gradient(135deg,#1B1F24,#2F363E);transform:translateY(-1px);
    box-shadow:0 12px 24px -12px rgba(22,35,63,1)}
  .mini-links a.gh svg{width:13px;height:13px;flex:0 0 auto}
  .mini-links a.gh .star{background:rgba(247,200,107,.22);color:var(--gold);border-radius:6px;
    padding:0 5px;font-size:10.5px;font-weight:800;line-height:1.7}
  .card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px;flex-wrap:wrap}
  .go{font-size:14px;font-weight:750;color:var(--acc-deep);display:inline-flex;align-items:center;gap:5px;transition:gap .2s}
  .go:hover{gap:9px}
  .go::after{content:"";width:6px;height:6px;border-right:1.8px solid currentColor;border-top:1.8px solid currentColor;transform:rotate(45deg)}
  button.go{background:none;border:none;padding:0;font-family:inherit;cursor:pointer}
  button.go.done{color:var(--good)}
  button.go.done::after{display:none}
  /* 卡片上的实时状态点 */
  .chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:750;
    padding:3px 9px;border-radius:999px;border:1px solid var(--border);background:#fff;color:var(--t3);white-space:nowrap}
  .chip .d{width:7px;height:7px;border-radius:50%;background:var(--t3)}
  .chip.on{color:var(--good);border-color:rgba(55,185,139,.35);background:rgba(55,185,139,.08)}
  .chip.on .d{background:var(--good);box-shadow:0 0 0 3px rgba(55,185,139,.16)}
  .chip.off{color:var(--bad);border-color:rgba(232,112,127,.35);background:rgba(232,112,127,.08)}
  .chip.off .d{background:var(--bad);box-shadow:0 0 0 3px rgba(232,112,127,.16)}
  .chip.na{color:var(--t3)}
  .chip.wait .d{animation:pulse 1.1s infinite}
  /* 有新版本：暖黄提示 */
  .chip.up{color:#A9701A;border-color:rgba(247,200,107,.55);background:rgba(247,200,107,.18)}
  .chip.up .d{background:var(--gold);box-shadow:0 0 0 3px rgba(247,200,107,.22);animation:pulse 1.4s infinite}
  .chip.hidden{display:none}
  .stat .up-badge{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:1px 8px;
    border-radius:999px;font-size:11px;font-weight:800;color:#A9701A;background:rgba(247,200,107,.2);
    border:1px solid rgba(247,200,107,.5);vertical-align:middle}
  .stat.ok-ver .v{color:var(--t1)}
  .stat .ver{font-size:15px;font-weight:750;color:var(--t3)}
  /* 版本卡片的时间线：上次检查 / 最近更新 */
  .stat .sub{font-size:11.5px;color:var(--t3);margin-top:4px;line-height:1.5}
  .stat .sub b{color:var(--acc-deep);font-weight:750}
  .stat .fresh{display:inline-flex;align-items:center;gap:3px;margin-left:5px;padding:1px 7px;border-radius:999px;
    font-size:10.5px;font-weight:800;color:#1E7A55;background:rgba(55,185,139,.16);border:1px solid rgba(55,185,139,.4)}
  @keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}

  /* ── 状态面板 ── */
  .panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:24px;
    box-shadow:0 4px 18px -14px rgba(22,35,63,.5)}
  .panel-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px}
  .panel-top .t{font-size:15px;font-weight:800;color:var(--t1)}
  .panel-top .s{font-size:12.5px;color:var(--t3)}
  .btn-row{display:flex;gap:9px;flex-wrap:wrap}
  .b-check{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,var(--t1),#26375C);color:#fff;
    font-size:14px;font-weight:750;padding:11px 21px;border-radius:999px;border:none;cursor:pointer;
    box-shadow:0 12px 26px -16px rgba(22,35,63,1);transition:transform .2s}
  .b-check:hover{transform:translateY(-2px)}
  .b-check:disabled{opacity:.5;cursor:not-allowed;transform:none}
  .b-ghost{display:inline-flex;align-items:center;gap:7px;background:#fff;color:var(--t2);font-size:13.5px;font-weight:700;
    padding:11px 18px;border-radius:999px;border:1px solid var(--border);cursor:pointer;transition:all .2s}
  .b-ghost:hover{color:var(--acc-deep);border-color:var(--acc);background:var(--tint)}
  .rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
  .srow{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid var(--border);
    border-radius:12px;background:rgba(255,255,255,.7);transition:border-color .2s,background .2s}
  .srow:hover{border-color:var(--border-acc);background:#fff}
  .srow .dot{width:11px;height:11px;border-radius:50%;background:var(--t3);flex:0 0 auto;transition:background .3s,box-shadow .3s}
  .srow .dot.on{background:var(--good);box-shadow:0 0 0 4px rgba(55,185,139,.16)}
  .srow .dot.off{background:var(--bad);box-shadow:0 0 0 4px rgba(232,112,127,.16)}
  .srow .nm{font-size:14px;font-weight:700;color:var(--t1);min-width:0}
  .srow .pa{font-family:var(--mono);font-size:11.5px;color:var(--t3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .srow .ms{margin-left:auto;font-size:11.5px;color:var(--t3);font-variant-numeric:tabular-nums;white-space:nowrap}

  .term{margin-top:18px;background:var(--code-bg);color:var(--code-fg);border-radius:var(--r);overflow:hidden;
    font-family:var(--mono);font-size:13.5px;border:1px solid rgba(138,217,248,.14)}
  .term-bar{display:flex;align-items:center;gap:8px;padding:11px 15px;background:rgba(138,217,248,.07);cursor:pointer;user-select:none}
  .term-bar .dot{width:11px;height:11px;border-radius:50%}
  .term-bar .dot.r{background:#FF8FA3}.term-bar .dot.y{background:var(--gold)}.term-bar .dot.g{background:var(--good)}
  .term-bar span{color:rgba(220,235,250,.45);font-size:12px;margin-left:8px}
  .term-bar .tog{margin-left:auto;color:rgba(220,235,250,.55);font-size:12px;background:none;border:1px solid rgba(138,217,248,.25);
    border-radius:999px;padding:2px 10px;cursor:pointer;font-family:inherit}
  .term-body{padding:16px 18px;white-space:pre-wrap;word-break:break-word;max-height:280px;overflow:auto}
  .term.collapsed .term-body{display:none}
  .term-body .ln{margin-bottom:5px}
  .term-body .prompt{color:var(--acc2)}
  .term-body .dim{color:rgba(220,235,250,.45)}
  .term-body .ok{color:#4FD1A5}
  .term-body .bad{color:#FF8FA3}
  .term-body .gap{height:9px}

  /* ── 关于 ── */
  .about{background:rgba(255,255,255,.8);border:1px solid var(--border);border-radius:var(--r2);padding:26px;
    box-shadow:var(--sh);display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}
  .about h4{font-size:14.5px;font-weight:800;color:var(--t1);margin-bottom:7px;display:flex;align-items:center;gap:7px}
  .about p,.about li{font-size:13.6px;color:var(--t2)}
  .about ul{list-style:none;display:flex;flex-direction:column;gap:5px}
  .about li::before{content:'🐾';margin-right:7px;font-size:11px;opacity:.75}
  .about a{color:var(--acc-deep);font-weight:650;border-bottom:1px dashed var(--border-acc)}

  /* ── 页脚 ── */
  .foot{margin-top:56px;border-top:1px solid var(--border);padding:30px 0;font-size:13px;color:var(--t3);position:relative;z-index:1}
  .foot-in{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
  .foot .yuzu{display:inline-flex;align-items:center;gap:6px;color:var(--acc-deep);font-weight:700}

  @media (max-width:760px){
    .wrap{padding:0 18px}
    .hero{padding:56px 0 36px}
    .hero::after{display:none}
    .sect{padding:44px 0 4px}
    .nav-links a:not(.live-pill){display:none}
    .stats{grid-template-columns:repeat(2,1fr);gap:10px}
    .stat{padding:13px 15px}
    .stat .v{font-size:22px}
    .cards{grid-template-columns:1fr}
    .rows{grid-template-columns:1fr}
  }
  @media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ═══════════════════════════════════════════════════════════════════════════
   全站视觉统一升级（2026-10-19）· 门户追加样式
   动态壁纸 + 光斑 + 流光标题 + 卡片炫光 + 统计卡彩色强调
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 动态壁纸层 ─────────────────────────────────────────────────────────── */
#bg {
  position: fixed; inset: 0; z-index: -3;
  background-size: cover; background-position: center;
  opacity: 0; transition: opacity 1.1s ease;
  filter: saturate(.92);
}
#bg.in { opacity: 1; }
#ov {
  position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background:
    radial-gradient(1200px 700px at 50% -20%, rgba(255, 255, 255, .72), transparent 62%),
    linear-gradient(180deg, rgba(247, 251, 255, .95) 0%, rgba(238, 247, 255, .88) 45%, rgba(248, 252, 255, .95) 100%);
}

/* ── 背景光斑 ───────────────────────────────────────────────────────────── */
.orbs { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: -1; }
.orbs i {
  position: absolute; display: block; border-radius: 50%;
  filter: blur(50px); opacity: .5;
  animation: orbs-float 16s ease-in-out infinite;
}
.orbs i:nth-child(1) { width: 300px; height: 300px; left: -60px; top: -80px; background: rgba(138, 217, 248, .8); }
.orbs i:nth-child(2) { width: 240px; height: 240px; right: 4%; top: 6%; background: rgba(201, 182, 255, .75); animation-delay: -6s; }
.orbs i:nth-child(3) { width: 200px; height: 200px; right: 24%; bottom: -80px; background: rgba(255, 214, 170, .75); animation-delay: -11s; }
@keyframes orbs-float {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
  50% { transform: translate3d(14px, -20px, 0) scale(1.08); }
}

/* ── 流光标题 ───────────────────────────────────────────────────────────── */
.hero h1 em {
  background: linear-gradient(120deg, var(--acc-deep), var(--acc) 28%, var(--lav) 52%, var(--gold) 74%, var(--acc-deep));
  background-size: 220% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: hero-grad 10s linear infinite;
}
@keyframes hero-grad { 0% { background-position: 0% 50%; } 100% { background-position: 220% 50%; } }

/* ── 统计卡：右上角彩色方块 ─────────────────────────────────────────────── */
.stats .stat:nth-child(1) { --s: var(--acc); }
.stats .stat:nth-child(2) { --s: var(--lav); }
.stats .stat:nth-child(3) { --s: var(--pink); }
.stats .stat:nth-child(4) { --s: var(--gold); }
.stats .stat:nth-child(5) { --s: var(--acc2); }
.stats .stat:nth-child(6) { --s: var(--acc-deep); }
.stats .stat { transition: transform .22s, box-shadow .22s, border-color .22s; }
.stats .stat:hover { transform: translateY(-3px); box-shadow: 0 22px 38px -28px var(--s, var(--acc)); border-color: var(--border-acc); }
.stats .stat::before {
  content: ''; position: absolute; right: 14px; top: 14px; width: 22px; height: 22px; border-radius: 8px;
  background: linear-gradient(145deg, var(--s, var(--acc)), rgba(255, 255, 255, .6));
  opacity: .85; pointer-events: none;
  box-shadow: 0 6px 14px -8px var(--s, var(--acc));
}

/* ── 服务卡片：hover 高光扫过 + 图标微动 ───────────────────────────────── */
.card { will-change: transform; }
.card::before {
  content: ''; position: absolute; top: -60%; bottom: -60%; left: -80%; width: 55%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent);
  transform: skewX(-18deg); opacity: 0; pointer-events: none; transition: opacity .25s;
}
.card:hover::before { opacity: 1; animation: card-sheen .8s ease; }
@keyframes card-sheen { from { left: -80%; } to { left: 150%; } }
.card:hover .ico { transform: translateY(-2px) rotate(-4deg) scale(1.05); }
.card.main { border-color: var(--border-acc); }

/* ── 分组标题装饰线 ─────────────────────────────────────────────────────── */
.group-head::after {
  content: ''; flex: 1; height: 1px; margin-left: 6px;
  background: linear-gradient(90deg, var(--border-acc), transparent);
}

/* ── 主按钮流光 ─────────────────────────────────────────────────────────── */
.b-pri { position: relative; overflow: hidden; }
.b-pri::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, .38), transparent 70%);
  transform: translateX(-120%); animation: btn-shine 5.5s ease-in-out infinite;
}
@keyframes btn-shine { 0%, 70% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }

/* ── 无障碍：减少动态 ───────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .orbs i, .hero h1 em, .b-pri::after, .card::before { animation: none !important; }
}


/* ── 页脚联系邮箱 ─────────────────────────────────────────────────────── */
.foot-mail { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--t3); }
.foot-mail svg { width: 15px; height: 15px; flex: none; color: var(--acc-deep); }
.foot-mail a {
  color: var(--acc-deep); font-weight: 700; text-decoration: none;
  border-bottom: 1px dashed rgba(79, 179, 232, .5);
}
.foot-mail a:hover { border-bottom-style: solid; }


