html { scroll-behavior: smooth; background: #070a14; }
    body { margin: 0; overflow-y: auto; font-family: 'Inter', system-ui, sans-serif; background-color: #070a14; }
    /* ---------- 全局音效开关：右上角悬浮，置于一切弹层之上 ---------- */
    .sfx-toggle { position: fixed; top: calc(env(safe-area-inset-top, 0px) + 12px); right: 14px; z-index: 1900;
      width: 38px; height: 38px; border-radius: 50%; border: 1px solid rgba(148,163,184,0.35);
      background: rgba(15,23,42,0.72); backdrop-filter: blur(6px); color: rgba(226,232,240,0.85);
      font-size: 15px; cursor: pointer; display: flex; align-items: center; justify-content: center;
      transition: all 0.15s; box-shadow: 0 4px 18px rgba(0,0,0,0.35); pointer-events: auto; }
    .sfx-toggle:hover { background: rgba(30,41,59,0.9); color: #f8fafc; border-color: rgba(148,163,184,0.6); transform: scale(1.06); }
    .sfx-toggle:active { transform: scale(0.94); }
    .sfx-toggle.sfx-muted { color: rgba(148,163,184,0.45); border-color: rgba(148,163,184,0.22); }
    /* ---------- 首屏加载器：内联样式，CDN 之前立即可见 ---------- */
    #boot-loader { position: fixed; inset: 0; z-index: 9999; background: #070a14; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; transition: opacity 0.5s ease; }
    #boot-loader.done { opacity: 0; pointer-events: none; }
    .boot-ring { position: relative; width: 58px; height: 58px; }
    .boot-ring::before, .boot-ring::after { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 3px solid rgba(45,212,191,0.15); }
    .boot-ring::before { border-top-color: #2dd4bf; animation: boot-spin 1.1s linear infinite; }
    .boot-ring::after { inset: 9px; border-bottom-color: rgba(56,189,248,0.9); animation: boot-spin 1.6s linear infinite reverse; }
    .boot-title { color: #99f6e4; font: 800 15px/1 'Inter', system-ui, sans-serif; letter-spacing: 0.24em; }
    .boot-text { color: rgba(148,163,184,0.85); font: 600 11px/1 ui-monospace, 'SFMono-Regular', monospace; letter-spacing: 0.22em; }
    .boot-text::after { content: ''; animation: boot-dots 1.4s steps(4, end) infinite; }
    @keyframes boot-spin { to { transform: rotate(360deg); } }
    @keyframes boot-dots { 0% { content: ''; } 25% { content: '·'; } 50% { content: '··'; } 75% { content: '···'; } 100% { content: ''; } }
    /* 卡片撑满首屏，页脚在折叠线之下，向下滚动可见 */
    #app { position: relative; width: 100%; min-height: 100svh; display: flex; flex-direction: column; align-items: center; z-index: 10; pointer-events: none; }
    .glass-card {
      pointer-events: auto; width: 94%; max-width: 600px; flex: 1; margin: 14px 0 0;
      background: rgba(10, 16, 30, 0.7); backdrop-filter: blur(10px) saturate(150%);
      border: 1px solid rgba(45, 212, 191, 0.2); border-radius: 2.5rem; padding: 1.75rem 1.5rem 1.5rem;
      box-shadow: 0 30px 60px rgba(0,0,0,0.8), 0 0 0 1px rgba(45,212,191,0.08) inset;
      scrollbar-width: thin; scrollbar-color: #2dd4bf #1e293b;
    }
    .glass-card::-webkit-scrollbar { width: 4px; }
    .glass-card::-webkit-scrollbar-track { background: #1e293b; border-radius: 12px; }
    .glass-card::-webkit-scrollbar-thumb { background: #2dd4bf; border-radius: 12px; }
    .option-card { transition: all 0.15s ease; border: 2px solid transparent; background: rgba(30,41,59,0.4); }
    .option-card:hover { border-color: rgba(45,212,191,0.5); background: rgba(45,212,191,0.06); }
    .option-card.selected { border-color: #2dd4bf; background: rgba(45,212,191,0.12); box-shadow: 0 0 20px rgba(45,212,191,0.08); }
    .fade-enter-active, .fade-leave-active { transition: opacity 0.25s ease, transform 0.2s ease; }
    .fade-enter-from { opacity: 0; transform: translateY(6px); }
    .fade-leave-to { opacity: 0; transform: translateY(-4px); }
    .radar-wrapper { position: relative; width: 100%; max-width: 380px; margin: 0 auto; aspect-ratio: 1/1; cursor: pointer; }
    .radar-wrapper canvas { width: 100% !important; height: 100% !important; display: block; background: transparent; }
    .title-gradient { background: linear-gradient(135deg, #b0f3e8 0%, #2dd4bf 50%, #38bdf8 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
    @keyframes soft-glow { 0% { box-shadow: 0 0 12px rgba(45,212,191,0.1); } 50% { box-shadow: 0 0 32px rgba(45,212,191,0.3); } 100% { box-shadow: 0 0 12px rgba(45,212,191,0.1); } }
    .conclusion-glow { animation: soft-glow 3s infinite ease-in-out; }

    /* 手机端：卡片上移+更透明，给底部火焰让出视觉空间 */
    @media (max-width: 640px), (orientation: portrait) and (max-width: 900px) {
      .glass-card { background: rgba(10, 16, 30, 0.52); backdrop-filter: blur(8px) saturate(130%); border-radius: 1.8rem; }
    }
    /* 危机感红晕 + 心跳：覆盖层在卡片之上但不拦截交互
       will-change 提升为合成层后，opacity 变化只走合成器，不再触发本层重绘 */
    #fire-vignette { position: fixed; inset: 0; z-index: 20; pointer-events: none; opacity: 0; will-change: opacity;
      background: radial-gradient(ellipse at 50% 50%, transparent 42%, rgba(180,20,0,0.55) 100%); }
    /* 海报等弹层期间整体隐藏火焰相关层 */
    body.fx-hidden #fire-canvas, body.fx-hidden #fire-vignette, body.fx-hidden #ember-canvas { display: none; }
    /* 前景火星画布：飘在卡片之上，营造被火海包围的紧张感 */
    #ember-canvas { position: fixed; inset: 0; z-index: 21; pointer-events: none; }

    /* ---------- 维度标签 & 解释弹窗 ---------- */
    .dim-chip { position:absolute; transform:translate(-50%,-50%); pointer-events:auto; background:rgba(13,25,40,0.88); border:1px solid rgba(45,212,191,0.35); color:#99f6e4; font-size:10px; padding:2px 9px; border-radius:999px; cursor:pointer; backdrop-filter:blur(4px); white-space:nowrap; transition:all .15s; }
    .dim-chip:hover { border-color:#2dd4bf; color:#ccfbf1; box-shadow:0 0 12px rgba(45,212,191,0.35); }
    .dim-pop { position:fixed; inset:0; z-index:1600; background:rgba(0,0,0,0.65); backdrop-filter:blur(6px); display:flex; align-items:center; justify-content:center; padding:16px; pointer-events:auto; }
    .dim-pop-box { width:100%; max-width:440px; background:rgba(13,21,36,0.97); border:1px solid rgba(45,212,191,0.3); border-radius:1.4rem; padding:1.5rem 1.4rem; box-shadow:0 40px 80px rgba(0,0,0,0.9); }

    /* ---------- 页面页脚（卡片之下，滚动可见）：测评入口 · 联系我 · 备案号 ---------- */
    .page-footer { position: relative; width: 100%; z-index: 22; pointer-events: none;
      padding: 34px 16px calc(30px + env(safe-area-inset-bottom, 0px));
      background: linear-gradient(to top, rgba(7,10,20,0.92), rgba(7,10,20,0.4) 55%, transparent); }
    .footer-inner { pointer-events: auto; display: flex; flex-direction: column; align-items: center; gap: 16px; max-width: 520px; margin: 0 auto; }
    .footer-entry { border: none; cursor: pointer; border-radius: 1.25rem; padding: 14px 34px; font-size: 0.9rem; font-weight: 700; color: #fff;
      background: linear-gradient(135deg, #0ea5e9, #6366f1); box-shadow: 0 10px 28px rgba(14,165,233,0.35); transition: all 0.15s;
      display: inline-flex; align-items: center; gap: 9px; }
    .footer-entry:hover { transform: translateY(-2px); box-shadow: 0 14px 32px rgba(14,165,233,0.5); }
    .footer-contact { border: 1px solid rgba(45,212,191,0.35); color: #99f6e4; background: rgba(13,25,40,0.6); backdrop-filter: blur(6px);
      border-radius: 999px; padding: 9px 26px; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.06em; cursor: pointer; transition: all 0.15s;
      display: inline-flex; align-items: center; gap: 8px; }
    .footer-contact:hover { border-color: #2dd4bf; color: #ccfbf1; box-shadow: 0 0 18px rgba(45,212,191,0.3); }
    .footer-copyrights { font-size: 10px; font-family: ui-monospace, monospace; color: rgba(100,116,139,0.9); text-decoration: none; letter-spacing: 0.04em; transition: color 0.15s; }
    .footer-copyrights:hover { color: #94a3b8; }
    .footer-icp { font-size: 10px; font-family: ui-monospace, monospace; color: rgba(100,116,139,0.9); text-decoration: none; letter-spacing: 0.04em; transition: color 0.15s; }
    .footer-icp:hover { color: #94a3b8; }
    /* 二维码放大弹层：仅关闭按钮可关 */
    .qr-pop { position: fixed; inset: 0; z-index: 1700; background: rgba(0,0,0,0.85); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; pointer-events: auto; }
    .qr-pop-card { text-align: center; max-width: 88vw; }
    .qr-pop-card img { width: min(72vw, 340px); border-radius: 18px; background: #fff; padding: 14px; display: block; margin: 0 auto; box-shadow: 0 30px 90px rgba(0,0,0,0.95); cursor: zoom-in; }
    .qr-pop-card p { margin: 16px 0 14px; color: #e2e8f0; font-size: 0.9rem; letter-spacing: 0.05em; }
    .qr-pop-close { pointer-events: auto; border: 1px solid rgba(148,163,184,0.4); color: #e2e8f0; background: rgba(15,23,42,0.8); padding: 9px 42px; border-radius: 999px; font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: all 0.15s; }
    /* 二维码弹层 CTA · 人形DeepSeek */
    .qr-cta { margin: 6px auto 18px; padding: 16px 20px; max-width: min(76vw, 340px); border-radius: 16px; text-align: center;
      background: linear-gradient(160deg, rgba(255,209,102,0.14), rgba(30,41,59,0.72));
      border: 1px solid rgba(255,209,102,0.38);
      box-shadow: 0 0 34px rgba(255,180,40,0.16), inset 0 1px 0 rgba(255,255,255,0.07); }
    .qr-cta-title { display: inline-flex; align-items: center; gap: 8px; color: #ffd166; font-size: 1.02rem; font-weight: 900; letter-spacing: 0.06em; text-shadow: 0 0 18px rgba(255,180,40,0.45); margin-bottom: 8px; }
    .qr-cta p { margin: 0; color: #cbd5e1; font-size: 0.82rem; line-height: 1.85; letter-spacing: 0.03em; }
    .qr-pop-close:hover { background: rgba(30,41,59,0.9); border-color: rgba(148,163,184,0.7); }
    /* 结果海报弹层 */
    .poster-pop { position: fixed; inset: 0; z-index: 1700; background: rgba(0,0,0,0.85); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; padding: 16px; pointer-events: auto; }
    .poster-card { text-align: center; max-height: 94vh; overflow-y: auto; }
    .poster-img { width: min(86vw, 400px); border-radius: 18px; box-shadow: 0 30px 90px rgba(0,0,0,0.95); display: block; margin: 0 auto; }

    /* ---------- 真实测评 ---------- */
    .realtest-overlay { position: fixed; inset: 0; z-index: 1500; background: rgba(0,0,0,0.74); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; padding: 16px; pointer-events: auto; overflow-y: auto; }
    .realtest-card { width: 100%; max-width: 640px; max-height: 92vh; overflow-y: auto; background: rgba(13,21,36,0.96); border: 1px solid rgba(56,189,248,0.28); border-radius: 1.6rem; padding: 1.6rem 1.4rem; box-shadow: 0 40px 90px rgba(0,0,0,0.9); scrollbar-width: thin; scrollbar-color: #38bdf8 #1e293b; }
    .realtest-card::-webkit-scrollbar { width: 4px; }
    .realtest-card::-webkit-scrollbar-thumb { background: #38bdf8; border-radius: 12px; }
    .real-opt { transition: all 0.15s ease; border: 2px solid transparent; background: rgba(30,41,59,0.4); }
    .real-opt:hover { border-color: rgba(56,189,248,0.5); background: rgba(56,189,248,0.06); }
    .real-opt.selected { border-color: #38bdf8; background: rgba(56,189,248,0.12); }

    .crawl-qr { position: absolute; right: 18px; bottom: 18px; z-index: 15; text-align: center; pointer-events: auto; }
    .crawl-qr img { width: 78px; height: 78px; border-radius: 10px; background: #fff; padding: 4px; border: 1px solid rgba(255,209,102,0.4); display: block; margin: 0 auto 5px; box-shadow: 0 6px 24px rgba(0,0,0,0.6); }
    .crawl-qr span { color: rgba(255,209,102,0.8); font-size: 10px; letter-spacing: 0.1em; }

    /* ---------- 星球大战字幕 ---------- */
    .crawl-overlay { position: fixed; inset: 0; z-index: 999; background: radial-gradient(ellipse at 50% 130%, rgba(255,120,0,0.10), transparent 60%), #000; pointer-events: auto; display: flex; flex-direction: column; }
    .crawl-toolbar { position: absolute; top: 0; left: 0; right: 0; z-index: 20; display: flex; justify-content: space-between; align-items: center; padding: 14px 18px; }
    .crawl-btn { pointer-events: auto; border: 1px solid rgba(255,191,64,0.35); color: #ffd166; background: rgba(20,14,6,0.65); backdrop-filter: blur(6px); padding: 8px 18px; border-radius: 999px; font-size: 0.85rem; font-weight: 600; letter-spacing: 0.05em; cursor: pointer; transition: all .2s; display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
    .crawl-btn:hover { background: rgba(255,191,64,0.15); border-color: rgba(255,191,64,0.7); }
    .crawl-btn.close { color: #e2e8f0; border-color: rgba(148,163,184,0.35); background: rgba(15,23,42,0.6); }
    .crawl-hint { color: rgba(255,209,102,0.55); font-size: 0.7rem; font-family: ui-monospace, monospace; letter-spacing: 0.1em; padding: 0 10px; }
    .crawl-stage { position: absolute; inset: 0; overflow: hidden; perspective: 1600px; perspective-origin: 50% 46%; }
    /* 固定倾斜平面（传送带）：尺寸恒为舞台大小，旋转轴心永远在舞台底边——
       与文案长度完全无关，改文案不再影响几何/消失点 */
    .crawl-plane { position: absolute; inset: 0; transform-origin: 50% 100%; transform: rotateX(22deg); }
    /* 传送带上的货物：文案容器，仅在平面本地坐标里做 translateY 滑动 */
    .crawl-content { position: absolute; left: 50%; top: 0; width: min(94vw, 900px); transform: translateX(-50%) translateY(0); will-change: transform; }
    .crawl-text { color: #ffd166; text-align: justify; text-align-last: center; font-weight: 700; line-height: 2.0; font-size: clamp(19px, 3.8vw, 29px); text-shadow: 0 0 14px rgba(255,160,0,0.35); }
    .crawl-title { text-align: center; color: #ffe9b0; font-weight: 900; letter-spacing: 0.18em; margin: 0 0 1.2em; font-size: clamp(34px, 7vw, 64px); text-shadow: 0 0 24px rgba(255,180,40,0.5); }
    .crawl-sub { text-align: center; color: rgba(255,209,102,0.7); font-size: 0.72em; letter-spacing: 0.35em; margin-bottom: 2.4em; }
    .crawl-p-label { color: rgba(255,209,102,0.8); font-size: 0.78em; letter-spacing: 0.15em; margin: 1.8em 0 0.7em; text-align: center; text-shadow: 0 0 10px rgba(255,160,0,0.3); }
    .crawl-products { list-style: none; margin: 0; padding: 0; }
    .crawl-products li { display: flex; align-items: baseline; gap: 0.9em; padding: 0.38em 0; font-size: 0.9em; border-bottom: 1px dashed rgba(255,209,102,0.18); }
    .crawl-products li .rank { font-family: ui-monospace, monospace; font-size: 0.75em; color: rgba(255,209,102,0.5); min-width: 2.2em; text-align: right; }
    .crawl-products li .diff { margin-left: auto; font-family: ui-monospace, monospace; font-size: 0.68em; color: rgba(255,140,60,0.75); white-space: nowrap; letter-spacing: 0.05em; }
    .crawl-products li.hero { color: #fff3d6; text-shadow: 0 0 18px rgba(255,200,60,0.65); font-size: 1.12em; border-bottom: 1px solid rgba(255,209,102,0.5); }
    .crawl-products li.hero .name { letter-spacing: 0.06em; }
    .crawl-footer { text-align: center; margin-top: 3em; color: #ffe9b0; font-size: 1.02em; }

    /* ---------- 结论从雷达中心“蹦出来” ---------- */
    .radar-center-pop { position: absolute; left: 50%; top: 50%; z-index: 30; transform: translate(-50%,-50%); pointer-events: none;
      background: rgba(13,25,40,0.92); border: 1px solid rgba(251,191,36,0.55); color: #fde68a;
      font-size: 13px; font-weight: 800; letter-spacing: 0.08em; padding: 8px 18px; border-radius: 999px; white-space: nowrap;
      box-shadow: 0 0 32px rgba(251,191,36,0.35), 0 0 0 6px rgba(251,191,36,0.06);
      animation: center-pop-in .55s cubic-bezier(0.34,1.56,0.64,1) both, center-pop-out .45s ease-in .85s forwards; }
    @keyframes center-pop-in {
      0% { opacity: 0; transform: translate(-50%,-50%) scale(0.15); }
      62% { opacity: 1; transform: translate(-50%,-50%) scale(1.16); }
      100% { opacity: 1; transform: translate(-50%,-50%) scale(1); } }
    @keyframes center-pop-out {
      to { opacity: 0; transform: translate(-50%,-92%) scale(0.72); } }
    .conclusion-pop-in { animation: conclusion-bounce-in .7s cubic-bezier(0.34,1.56,0.64,1) both; }
    @keyframes conclusion-bounce-in {
      0% { opacity: 0; transform: translateY(-42px) scale(0.82); }
      55% { opacity: 1; transform: translateY(10px) scale(1.02); }
      100% { opacity: 1; transform: translateY(0) scale(1); } }

    /* ---------- 还有更多 · 可感知的维度（作者故事末尾） ---------- */
    .crawl-more { margin-top: 3em; }
    .crawl-more-title { text-align: center; color: #ffe9b0; font-weight: 900; letter-spacing: 0.14em; font-size: 1.16em; margin-bottom: 0.5em; text-shadow: 0 0 22px rgba(255,180,40,0.55); }
    .crawl-more-sub { text-align: center; color: rgba(255,209,102,0.78); font-size: 0.78em; line-height: 1.9; margin-bottom: 1.6em; }
    .crawl-dim { margin: 1.7em 0; }
    .crawl-dim-name { color: #ffe9b0; font-size: 0.94em; line-height: 1.7; margin-bottom: 0.5em; text-shadow: 0 0 12px rgba(255,160,0,0.4); }
    .crawl-dim p { font-size: 0.78em; line-height: 1.95; margin: 0.45em 0; }
    .crawl-more-table { margin: 1.8em 0; border: 1px dashed rgba(255,209,102,0.4); border-radius: 14px; overflow: hidden; font-size: 0.72em; }
    .crawl-table-row { display: flex; align-items: stretch; }
    .crawl-table-row span { flex: 1; padding: 0.75em 0.9em; border-bottom: 1px dashed rgba(255,209,102,0.2); line-height: 1.7; }
    .crawl-table-row span:first-child { flex: 0.85; color: #ffe9b0; font-weight: 800; white-space: nowrap; }
    .crawl-table-row span:nth-child(2) { flex: 1.05; }
    .crawl-table-row span:last-child { flex: 1.7; }
    .crawl-table-row.head span { background: rgba(255,180,40,0.1); color: #ffe9b0; font-weight: 800; letter-spacing: 0.1em; border-bottom: 1px solid rgba(255,209,102,0.4); }
    .crawl-table-row:last-child span { border-bottom: none; }
    .crawl-more-end { text-align: center; font-size: 0.85em; color: #ffe9b0; margin-top: 2em; line-height: 2.05; text-shadow: 0 0 14px rgba(255,160,0,0.35); }
