:root{--bg: var(--sc-surface);--bg-soft: var(--sc-surface);--navy: var(--sc-primary);--ink: var(--sc-primary);--muted: var(--sc-text-light);--faint: var(--sc-text-light);--line: var(--sc-border);--line-strong: var(--sc-border);--blue: var(--sc-accent);--blue-dark: var(--sc-accent-light);--blue-soft: var(--sc-surface);--radius-lg: 18px;--radius-md: 14px;--radius-sm: 10px;--radius-pill: 999px;--shadow-card: 0 1px 2px rgba(43, 74, 68, .05), 0 12px 32px -14px rgba(43, 74, 68, .16);--font-sans: "Noto Sans SC", "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: "Noto Sans SC Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}ul{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit}.hero-deco{position:absolute;top:20px;right:0;width:520px;height:320px;pointer-events:none}.plus{position:absolute;font-size:26px;line-height:1;font-weight:300;user-select:none;--mx: 0px;--my: 0px;translate:var(--mx) var(--my);transition:translate .55s cubic-bezier(.22,1,.36,1);animation:float 6s ease-in-out infinite}.p1{color:#6d8fa8;right:460px;top:8px;font-size:32px;opacity:.3;animation-duration:6s;animation-delay:0s}.p2{color:#c98f63;right:380px;top:56px;font-size:22px;opacity:.34;animation-duration:6.8s;animation-delay:.3s}.p3{color:#7fa39d;right:300px;top:16px;font-size:28px;opacity:.32;animation-duration:7.2s;animation-delay:.7s}.p4{color:#c4827c;right:220px;top:70px;font-size:24px;opacity:.32;animation-duration:6.4s;animation-delay:1s}.p5{color:#6d8fa8;right:140px;top:20px;font-size:36px;opacity:.3;animation-duration:7s;animation-delay:.5s}.p6{color:#c98f63;right:60px;top:62px;font-size:20px;opacity:.34;animation-duration:6.6s;animation-delay:1.3s}.p7{color:#c4827c;right:430px;top:130px;font-size:24px;opacity:.3;animation-duration:6.2s;animation-delay:.9s}.p8{color:#7fa39d;right:350px;top:150px;font-size:30px;opacity:.3;animation-duration:7.4s;animation-delay:.2s}.p9{color:#6d8fa8;right:260px;top:110px;font-size:22px;opacity:.3;animation-duration:6.5s;animation-delay:1.1s}.p10{color:#c98f63;right:180px;top:140px;font-size:28px;opacity:.32;animation-duration:7.1s;animation-delay:.4s}.p11{color:#c4827c;right:90px;top:120px;font-size:26px;opacity:.32;animation-duration:6.3s;animation-delay:1.4s}.p12{color:#7fa39d;right:10px;top:100px;font-size:22px;opacity:.3;animation-duration:6.7s;animation-delay:.6s}.p13{color:#6d8fa8;right:400px;top:220px;font-size:26px;opacity:.3;animation-duration:6.9s;animation-delay:.8s}.p14{color:#c98f63;right:300px;top:240px;font-size:30px;opacity:.3;animation-duration:7.3s;animation-delay:1.2s}.p15{color:#c4827c;right:200px;top:210px;font-size:22px;opacity:.3;animation-duration:6.1s;animation-delay:.3s}.p16{color:#7fa39d;right:80px;top:230px;font-size:26px;opacity:.3;animation-duration:6.6s;animation-delay:1.5s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.eyebrow{position:relative;margin:0 0 14px;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--blue)}.hero-title{position:relative;margin:0;max-width:560px;font-size:clamp(28px,4.2vw,40px);font-weight:600;line-height:1.24;letter-spacing:-.015em;color:var(--navy)}.hero-sub{position:relative;margin:16px 0 0;max-width:520px;font-size:15px;color:var(--muted)}.extensions{background:var(--bg-soft);padding:52px 24px 80px}.extensions-inner{max-width:1120px;margin:0 auto}.section-head{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}.section-head h2{margin:0;font-size:22px;font-weight:600;letter-spacing:-.01em;color:var(--navy)}.section-count{font-size:12px;color:var(--muted);font-family:var(--font-mono);background:#fff;border:.5px solid var(--line-strong);padding:2px 10px;border-radius:var(--radius-pill)}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.filter-pill{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;padding:7px 14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink);cursor:pointer;transition:background .2s ease,border-color .2s ease,color .2s ease}.filter-pill:hover{border-color:var(--line-strong);color:var(--navy)}.filter-pill.is-active{background:var(--navy);border-color:var(--navy);color:#fff}.filter-count{font-size:11px;font-family:var(--font-mono)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.grid.filter-构成 .card:not([data-category=构成]),.grid.filter-趋势 .card:not([data-category=趋势]),.grid.filter-对比 .card:not([data-category=对比]),.grid.filter-标签云 .card:not([data-category=标签云]),.grid.filter-筛选 .card:not([data-category=筛选]){display:none}.card{position:relative}.panel{display:flex;flex-direction:column;height:100%;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s ease,border-color .3s ease}.panel:hover{transform:translateY(-4px);border-color:var(--line-strong);box-shadow:var(--shadow-card)}.cover{position:relative;width:100%;padding-bottom:100%;background:#f9fbf8;overflow:hidden}.cover-frame{position:absolute;inset:30px}.chart{width:100%;height:100%;display:block;transition:transform .5s cubic-bezier(.22,1,.36,1)}.petal{stroke:#ffffffc7;stroke-width:1.1;stroke-linejoin:round}.card-line:hover .chart{transform:scale(1.045)}.card-radar:hover .chart{transform:scale(1.05)}.card-tag:hover .chart{transform:scale(1.04)}.card-donut:hover .chart{transform:scale(1.03)}.card-rose:hover .chart,.card-funnel:hover .chart{transform:scale(1.04)}.card-stream:hover .chart,.card-beeswarm:hover .chart{transform:scale(1.045)}.card-tree:hover .chart,.card-dupont:hover .chart,.card-datefilter:hover .chart{transform:scale(1.04)}.card-dupont .d-link{fill:none;stroke:#ead7c4;stroke-width:1.6}.card-dupont .d-node-root rect{fill:#f6e7d8;stroke:#e07b39;stroke-width:1.6}.card-dupont .d-node rect{fill:#fdf8f3;stroke:#d9b89a;stroke-width:1.3}.card-dupont .d-node-root text,.card-dupont .d-node text{font:700 7px/1 Inter,system-ui,sans-serif;fill:#c8682e;text-anchor:middle;dominant-baseline:central;pointer-events:none}.card-dupont .d-node-leaf text{font-size:5px;fill:#b06a2e}.card-dupont .download-row{display:flex;gap:8px;margin-top:auto}.card-dupont .download-btn{margin-top:0;flex:1}.card-datefilter .df-panel{fill:#fff;stroke:#dbe3ea;stroke-width:1}.card-datefilter .df-div{stroke:#edf1f4;stroke-width:1}.card-datefilter .df-title{font:600 7px var(--font-sans);fill:#6b7d77}.card-datefilter .df-tab-bg{fill:#eef4f8}.card-datefilter .df-tab-on{stroke:#6d8fa8;stroke-width:2}.card-datefilter .df-tab{fill:none;stroke:#a8b4b0;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.card-datefilter .df-tab-act{stroke:#6d8fa8}.card-datefilter .df-glabel{font:500 5px var(--font-sans);fill:#a9b5b1}.card-datefilter .df-opt{fill:#fff;stroke:#e2e8ec;stroke-width:.9}.card-datefilter .df-opt-sel{fill:#e8f0f7;stroke:#6d8fa8;stroke-width:1.1}.card-datefilter .df-opt-t{font:500 5.2px var(--font-sans);fill:#6b7d77;text-anchor:middle;pointer-events:none}.card-datefilter .df-opt-t-sel{font-weight:600;fill:#4d6d80}.card-datefilter .df-status-bg{fill:#fafbfc}.card-datefilter .df-status{font:500 5.2px var(--font-sans);fill:#93a09b}.card-datefilter .df-status-b{font:600 5.2px var(--font-mono);fill:#1e293b;font-variant-numeric:tabular-nums}.card-datefilter .df-btn-ghost{fill:#fff;stroke:#e2e8ec;stroke-width:.9}.card-datefilter .df-btn-ghost-t{font:500 5.2px var(--font-sans);fill:#6b7d77;text-anchor:middle}.card-datefilter .df-btn-primary{fill:#6d8fa8}.card-datefilter .df-btn-primary-t{font:600 5.2px var(--font-sans);fill:#fff;text-anchor:middle}.card-tree .t-link{fill:none;stroke:#ead7c4;stroke-width:1.6}.card-tree .t-node-root rect{fill:#f6e7d8;stroke:#e07b39;stroke-width:1.6}.card-tree .t-node rect{fill:#fdf8f3;stroke:#d9b89a;stroke-width:1.3}.card-tree .t-node-root text,.card-tree .t-node text{font-family:var(--font-sans);font-weight:600;text-anchor:middle;dominant-baseline:middle;fill:#3a2d20}.card-tree .t-node-root text{font-size:9.5px;font-weight:700}.card-tree .t-node-root .t-val{font-size:7.5px;fill:#a06a3a;font-weight:500}.card-tree .t-node text{font-size:9px}.card-tree .t-node .t-val{font-size:6.5px;fill:#8a6e54;font-weight:500}.card-tree .t-bar-track{fill:#f3e9de}.card-tree .t-bar{fill:#e07b39;opacity:.85}.card-beeswarm .bw,.card-beeswarm .bw-1{fill:#6d8fa8}.card-beeswarm .bw-2{fill:#c98f63}.card-beeswarm .bw-3,.card-beeswarm .bw-4,.card-beeswarm .bw-5{fill:#b85d57}.card-beeswarm .bw{stroke:#ffffff8c;stroke-width:.5;transition:transform .35s ease}.card-donut .seg{fill:none;stroke-width:26}.card-donut .seg-1{stroke:#6d8fa8;stroke-dasharray:24 76;stroke-dashoffset:0}.card-donut .seg-2{stroke:#c98f63;stroke-dasharray:24 76;stroke-dashoffset:-25}.card-donut .seg-3{stroke:#7fa39d;stroke-dasharray:24 76;stroke-dashoffset:-50}.card-donut .seg-4{stroke:#c4827c;stroke-dasharray:24 76;stroke-dashoffset:-75}.card-donut .ct-value{font-size:28px;font-weight:600;fill:var(--navy);text-anchor:middle;dominant-baseline:middle}.card-donut .ct-label{font-size:11px;fill:var(--faint);text-anchor:middle;dominant-baseline:middle}.card-line .grid{stroke:#e6eee9}.card-line .ax{font-size:9px;fill:#64748b;font-family:var(--font-mono)}.card-line .area{fill:#5f7f96;opacity:.12}.card-line .main-line{fill:none;stroke:#5f7f96;stroke-width:3.5;stroke-linecap:round}.card-line .peak-dot{fill:#fff;stroke:#5f7f96;stroke-width:3}.card-line .tip{opacity:0;transition:opacity .3s ease}.card-line .tip rect{fill:var(--navy)}.card-line .tip text{font-size:11px;fill:#fff;text-anchor:middle;dominant-baseline:middle}.card-line .tip line{stroke:var(--navy);stroke-width:1.5}.card-line:hover .tip{opacity:1}.card-radar .ring{fill:#f2f6f3;stroke:#e2ebe6}.card-radar .ring-inner{fill:#f2f6f3}.card-radar .spoke{stroke:#e2ebe6}.card-radar .axl{font-size:9px;fill:var(--faint)}.card-radar .radar-fill{fill:#6d8fa8;opacity:.22;stroke:#6d8fa8;stroke-width:2.5}.card-radar .radar-dot{fill:#6d8fa8}.card-tag .pill text{font-size:11px;fill:#0f172a;text-anchor:middle;dominant-baseline:middle;font-family:var(--font-sans);font-weight:500}.card-tag .pill text.pill-dark{fill:#0f172a}.card-body{display:flex;flex-direction:column;flex:1;padding:14px 16px 16px}.card-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:14px}.card-title-row h3{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--navy)}.card-id{font-size:11px;font-family:var(--font-mono);color:var(--muted)}.card-meta{display:flex;align-items:baseline;gap:8px}.dl-count{font-size:12px;font-weight:500;color:var(--muted);white-space:nowrap}.dl-count b{color:var(--navy);font-weight:600}.download-btn{margin-top:auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:10px 16px;font-size:13px;font-weight:500;color:#fff;background:var(--navy);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .2s ease,transform .15s ease,opacity .2s ease}.download-btn:hover{background:#1f3a35}.download-btn:active{transform:translateY(1px)}.download-btn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.download-btn.is-busy{opacity:.75;pointer-events:none}.download-btn .btn-arrow{font-size:14px;line-height:1}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,16px);background:#0f172a;color:#fff;font-size:13px;padding:10px 18px;border-radius:var(--radius-sm);opacity:0;pointer-events:none;z-index:50;transition:opacity .25s ease,transform .25s ease}.toast.is-show{opacity:1;transform:translate(-50%)}.toast.is-error{background:#a32d2d}.install{margin-top:40px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:26px 28px 28px}.install-head h2{margin:0 0 6px;font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--navy)}.install-head p{margin:0;font-size:13px;color:var(--muted)}.install-steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:22px 0 0;padding:0}.install-steps li{display:flex;gap:12px}.step-no{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--blue-soft);color:var(--blue);font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center}.install-steps h3{margin:2px 0 4px;font-size:14px;font-weight:600;color:var(--ink)}.install-steps p{margin:0;font-size:13px;line-height:1.55;color:var(--muted)}.footer{background:var(--bg-soft);border-top:.5px solid var(--line);padding:28px 24px 40px;text-align:center}.footer p{margin:0;font-size:13px;color:var(--faint)}html.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s cubic-bezier(.22,1,.36,1)}html.js .reveal.in{opacity:1;transform:none}html.js .grid li:nth-child(1).reveal{transition-delay:0s}html.js .grid li:nth-child(2).reveal{transition-delay:.06s}html.js .grid li:nth-child(3).reveal{transition-delay:.12s}html.js .grid li:nth-child(4).reveal{transition-delay:.18s}@media(max-width:980px){.grid{grid-template-columns:repeat(2,1fr)}.hero-deco{width:360px;height:240px;opacity:.85}.hero-title{max-width:100%}}@media(max-width:640px){.hero{padding:56px 20px 44px}.hero-deco{width:240px;height:200px;opacity:.7}.extensions{padding:40px 20px 56px}.grid{grid-template-columns:1fr;gap:18px}.install{padding:20px}.install-steps{grid-template-columns:1fr;gap:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html.js .reveal{opacity:1;transform:none}}.ve-page .hero{max-width:1120px;margin:0 auto;padding-left:0;padding-right:0}@media(max-width:1180px){.ve-page .hero{padding-left:20px;padding-right:20px}}
