Commit 8c1711c1 authored by xuchentao's avatar xuchentao

feat: build Sumeiqiao official website

parents
node_modules/
dist/
.astro/
.codex-tmp/
.DS_Store
import { defineConfig } from "astro/config";
import sitemap from "@astrojs/sitemap";
export default defineConfig({
site: "https://www.sumeiqiao.com",
integrations: [sitemap()],
build: { format: "directory" },
trailingSlash: "always",
});
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "sumeiqiao-official-site",
"type": "module",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"check": "astro check"
},
"dependencies": {
"@astrojs/sitemap": "^3.7.3",
"astro": "^7.1.3"
},
"devDependencies": {
"@astrojs/check": "^0.9.6",
"typescript": "^5.9.3"
}
}
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#FAF8F4"/><stop offset="1" stop-color="#E4EFEA"/></linearGradient>
<linearGradient id="leaf" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#17AE9C"/><stop offset="1" stop-color="#0F766E"/></linearGradient>
</defs>
<rect width="1200" height="630" fill="url(#bg)"/>
<circle cx="1020" cy="100" r="270" fill="none" stroke="#9DB8AE" stroke-opacity=".35"/>
<circle cx="105" cy="625" r="230" fill="none" stroke="#9DB8AE" stroke-opacity=".25"/>
<path d="M870 170c-125 55-153 184-72 296 127-43 164-180 72-296Z" fill="url(#leaf)" opacity=".92"/>
<path d="M823 439c41-86 61-162 55-248" fill="none" stroke="#fff" stroke-width="3" opacity=".7"/>
<text x="92" y="155" fill="#0F766E" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="30" letter-spacing="8">SUMEIQIAO · 塑美俏</text>
<text x="92" y="300" fill="#333" font-family="Songti SC, STSong, serif" font-size="72">中式经络体龄管理</text>
<text x="92" y="390" fill="#17AE9C" font-family="Songti SC, STSong, serif" font-size="62">让身体自然轻盈</text>
<text x="96" y="485" fill="#6B7280" font-family="PingFang SC, Microsoft YaHei, sans-serif" font-size="26">减重 · 塑形 · 亚健康管理一体化方案</text>
<rect x="94" y="530" width="90" height="4" rx="2" fill="#9DB8AE"/>
</svg>
# 塑美俏体龄管理 — 欢迎搜索引擎与 AI 搜索抓取公开内容
User-agent: *
Allow: /
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-Web
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: Bytespider
Allow: /
User-agent: Baiduspider
Allow: /
Sitemap: https://www.sumeiqiao.com/sitemap-index.xml
{
"name": "塑美俏体龄管理",
"short_name": "塑美俏",
"start_url": "/",
"display": "standalone",
"background_color": "#FAF8F4",
"theme_color": "#17AE9C",
"lang": "zh-CN"
}
---
import { site } from "../data/site";
interface Props {
eyebrow?: string;
title?: string;
text?: string;
}
const {
eyebrow,
title = "从一次认真了解开始",
text = "告诉我们你所在的城市与关注方向,了解附近门店、项目体验或加盟合作。",
} = Astro.props;
---
<section class="cta-panel section-pad">
<div class="container cta-panel__inner" data-reveal>
<div>
{eyebrow && <div class="eyebrow eyebrow--light"><span></span>{eyebrow}</div>}
<h2>{title}</h2>
<p>{text}</p>
</div>
<div class="cta-panel__actions">
<a class="button button--white" href={`mailto:${site.contact.email}?subject=塑美俏官网咨询`}>邮件咨询</a>
<a class="button button--ghost-light" href="/contact/">联系与合作</a>
</div>
</div>
</section>
---
import logo from "../../横向-绿0013.svg";
import { site } from "../data/site";
---
<footer class="site-footer">
<div class="container footer-grid">
<div class="footer-brand">
<a href="/" aria-label="塑美俏首页" class="footer-logo">
<img src={logo.src} width="119" height="61" alt="塑美俏体龄管理" />
</a>
<p>{site.brand.tagline}</p>
<div class="footer-tags" aria-label="品牌定位">
<span>中式调理</span><span>体龄管理</span><span>自然健康</span>
</div>
</div>
<div>
<h2>认识塑美俏</h2>
<a href="/about/">品牌故事</a>
<a href="/services/">体龄管理</a>
<a href="/join/">加盟支持</a>
<a href="/faq/">常见问题</a>
</div>
<div>
<h2>服务方向</h2>
{site.services.map((item) => <a href={`/services/#${item.slug}`}>{item.name}</a>)}
</div>
<div class="footer-contact">
<h2>联系与合作</h2>
<a href={`mailto:${site.contact.email}`}>{site.contact.email}</a>
<address>{site.contact.address}</address>
<a class="footer-arrow" href="/contact/">查找附近门店 / 合作咨询 <span>↗</span></a>
</div>
</div>
<div class="container footer-bottom">
<p>© {new Date().getFullYear()} {site.brand.legalName}</p>
<p>健康管理服务不替代医疗诊断与治疗,实际体验因人而异。</p>
</div>
</footer>
---
import logo from "../../横向-绿0013.svg";
import { site } from "../data/site";
const path = Astro.url.pathname;
const isActive = (href: string) => href === "/" ? path === "/" : path.startsWith(href);
---
<div class="top-note">
<div class="container top-note__inner">
<span>中式经络体龄管理 · 自然调理 · 科学管理</span>
<a href="mailto:sumeiqiao@126.com">合作邮箱:{site.contact.email}</a>
</div>
</div>
<header class="site-header" data-header>
<div class="container site-header__inner">
<a class="brand" href="/" aria-label="塑美俏首页">
<img src={logo.src} width="119" height="61" alt="塑美俏体龄管理" />
</a>
<nav class="desktop-nav" aria-label="主导航">
<ul>
{site.nav.map((item) => (
<li class="nav-item">
<a class="nav-link" href={item.href} aria-current={isActive(item.href) ? "page" : undefined} aria-haspopup="true">
{item.label}<span class="nav-chevron" aria-hidden="true">⌄</span>
</a>
<div class="nav-dropdown">
<ul>
{item.children.slice(1).map((child) => (
<li><a href={child.href}>{child.label}<span aria-hidden="true">↗</span></a></li>
))}
</ul>
</div>
</li>
))}
</ul>
</nav>
<a class="button button--small header-cta" href="/contact/?intent=join">加盟详情咨询</a>
<details class="mobile-nav">
<summary aria-label="打开导航菜单">
<span></span><span></span><span></span>
</summary>
<nav data-mobile-nav aria-label="移动端导航">
{site.nav.map((item) => (
<div class="mobile-nav__group">
<a class="mobile-nav__primary" href={item.href} aria-current={isActive(item.href) ? "page" : undefined}>{item.label}</a>
<div class="mobile-subnav">
{item.children.slice(1).map((child) => <a href={child.href}>{child.label}</a>)}
</div>
</div>
))}
<a class="button" href="/contact/?intent=join">加盟详情咨询</a>
</nav>
</details>
</div>
</header>
---
interface Props {
eyebrow: string;
title: string;
intro?: string;
align?: "left" | "center";
light?: boolean;
}
const { eyebrow, title, intro, align = "left", light = false } = Astro.props;
---
<header class:list={["section-heading", `section-heading--${align}`, { "section-heading--light": light }]}>
<div class="eyebrow"><span></span>{eyebrow}</div>
<h2>{title}</h2>
{intro && <p>{intro}</p>}
</header>
---
interface Props {
service: {
slug: string;
index: string;
name: string;
intro: string;
audience: string;
value: string;
};
link?: boolean;
}
const { service, link = true } = Astro.props;
---
<article class="service-card" id={service.slug} data-reveal>
<div class="service-card__top">
<span class="service-card__index">{service.index}</span>
<span class="service-card__type">BODY AGE SERVICE</span>
</div>
<h3>{service.name}</h3>
<p>{service.intro}</p>
<dl>
<div><dt>适合人群</dt><dd>{service.audience}</dd></div>
<div><dt>核心方向</dt><dd>{service.value}</dd></div>
</dl>
{link && <a class="text-link" href={`/services/#${service.slug}`}>了解项目 <span>↗</span></a>}
</article>
export const site = {
brand: {
name: "塑美俏体龄管理",
shortName: "塑美俏",
englishName: "SUMEIQIAO",
legalName: "廊坊塑美俏品牌管理有限公司",
tagline: "让世界体验中式经络调理,改善全民健康",
industry: "美业 · 大健康 · 体龄管理 · 减肥塑形 · 中式调理",
},
home: {
eyebrow: "中式经络体龄管理专家",
headline: "让身体回到轻盈、舒展的自然状态",
subhead:
"以减重为入口,以亚健康调理为根本。塑美俏通过非侵入式中式经络调理,为消费者提供减重、塑形与日常健康管理的一体化方案。",
stats: [
{ value: "7,500+", label: "全国门店网络" },
{ value: "500万+", label: "年培训投入" },
{ value: "4维", label: "体龄管理目标" },
{ value: "4大", label: "持续售后团队" },
],
},
pillars: [
{
number: "01",
title: "体质健康化",
desc: "从身体状态出发,关注湿气、循环与日常亚健康困扰,为后续管理打好基础。",
},
{
number: "02",
title: "体肤年轻化",
desc: "把外在状态与内在体质放在同一套管理逻辑中,追求由内而外的轻盈活力。",
},
{
number: "03",
title: "体脂标准化",
desc: "围绕个人状态制定周期方案,帮助建立更可持续的体重与体脂管理习惯。",
},
{
number: "04",
title: "体型美化",
desc: "结合整体减重与局部塑形需求,让身形管理更有层次,也更贴近个人目标。",
},
],
services: [
{
slug: "weight-management",
index: "01",
name: "体龄管理减重",
intro: "通过中式经络调理进行科学体重管理,关注体质改善与长期状态。",
audience: "有减重与体质管理需求的人群",
value: "饮食管理更轻松,兼顾体质与体重",
note: "除孕期外,具体适用情况需由门店专业人员评估。",
},
{
slug: "dampness-conditioning",
index: "02",
name: "排湿排酸调理",
intro: "面向湿气重、容易疲惫等日常困扰,通过经络调理帮助改善身体状态。",
audience: "关注湿气与亚健康状态的人群",
value: "改善身体内环境,为后续管理打基础",
note: "属于日常健康管理服务,不替代医学检查与治疗。",
},
{
slug: "body-shaping",
index: "03",
name: "体型塑形管理",
intro: "在整体体重管理之外,进一步关注局部线条、体态与身形协调。",
audience: "有局部塑形或体态管理需求的人群",
value: "减重与塑形协同规划",
note: "实际方案与体验因个人基础、周期和配合度而异。",
},
{
slug: "wellness-conditioning",
index: "04",
name: "亚健康调理",
intro: "面向关注血糖、血压、尿酸及循环状态的人群,提供日常健康管理支持。",
audience: "有慢性亚健康管理需求的人群",
value: "在体重管理同时关注多维健康指标",
note: "不用于诊断、治疗疾病;异常指标请及时就医。",
},
],
about: {
founded: "2023年6月",
heading: "一家把门店结果放在招商速度之前的品牌",
story: [
"塑美俏创立于2023年6月,是一家以中式经络调理为核心的大健康与体龄管理品牌。品牌以减重为入口,以调理亚健康为根本,致力于为消费者提供科学、安全、有效的日常健康管理方案。",
"我们相信,真正长期的品牌增长来自门店经营能力,而不是短期扩张。塑美俏以深度交付为原则,通过培训、活动、客户服务与持续运营支持,陪伴合作门店把方法真正落到日常经营中。",
],
advantages: [
{
title: "深度交付模式",
desc: "不以招商数量作为唯一目标,集中资源陪伴已有门店跑通经营环节,再稳步推进区域发展。",
},
{
title: "持续培训体系",
desc: "年培训投入超500万元,覆盖初级班、精英班与领导人培训,让团队能力持续进阶。",
},
{
title: "门店经营闭环",
desc: "从内容引流、体验转化、升单锁客到区域裂变,形成可学习、可执行、可复盘的经营路径。",
},
],
},
support: [
{ title: "技术老师团队", desc: "负责项目标准、操作要点与门店技术问题的持续支持。" },
{ title: "销售总监团队", desc: "围绕首场活动、现场成交与门店节奏提供实战陪跑。" },
{ title: "客户服务经理", desc: "承接日常运营沟通,及时协调门店经营中的具体问题。" },
{ title: "塑美俏商学院", desc: "提供分层课程与持续培训,帮助个人与团队共同成长。" },
],
faq: [
{
q: "塑美俏是什么?跟普通减肥有什么区别?",
a: "塑美俏是以中式经络调理为核心的体龄管理品牌,不只关注体重数字,也关注体质、体脂、体型与日常亚健康状态。具体服务方案会结合个人情况评估制定。",
},
{
q: "真的不用节食吗?能吃好吗?",
a: "品牌倡导“吃得好,瘦得多”的轻松管理理念,不主张极端节食。实际饮食建议与管理节奏会根据个人基础和目标调整,效果也会因人而异。",
},
{
q: "不同年龄的人都适合吗?",
a: "品牌服务面向较广年龄范围,但每个人的身体状态不同。孕期不建议操作;经期、哺乳期及未成年人等特殊人群,应先向门店说明情况并接受专业评估,必要时咨询医生。",
},
{
q: "合作门店的售后支持有哪些?",
a: "塑美俏设有技术老师、销售总监、客户服务经理和商学院四类支持团队,覆盖技术、首场活动、日常运营与持续培训。",
},
{
q: "没有行业经验,合作后会不会很难上手?",
a: "项目体系围绕少量核心产品与标准流程设计,并配套分层培训和团队陪跑。是否适合合作仍需结合当地市场、个人投入与经营能力综合评估。",
},
{
q: "合作投入和经营结果有保障吗?",
a: "合作投入会因门店面积、城市、人员和运营方案不同而变化。品牌提供培训与经营支持,但不对收益作绝对承诺;建议在合作前完整了解费用、合同与经营风险。",
},
],
contact: {
website: "www.sumeiqiao.com",
email: "sumeiqiao@126.com",
address: "河北省廊坊市安次区光明西道114号",
locality: "安次区",
region: "河北省廊坊市",
heading: "联系与合作",
intro: "想了解附近门店、项目体验或加盟合作?欢迎通过邮件说明所在城市与需求,我们会为你安排对应人员联系。",
},
nav: [
{
href: "/",
label: "首页",
children: [
{ href: "/", label: "品牌首页" },
{ href: "/#body-age", label: "四维体龄管理" },
{ href: "/#services", label: "核心服务" },
{ href: "/#support", label: "门店支持" },
],
},
{
href: "/services/",
label: "体龄管理",
children: [
{ href: "/services/", label: "服务总览" },
{ href: "/services/#weight-management", label: "体龄管理减重" },
{ href: "/services/#dampness-conditioning", label: "排湿排酸调理" },
{ href: "/services/#body-shaping", label: "体型塑形管理" },
{ href: "/services/#wellness-conditioning", label: "亚健康调理" },
],
},
{
href: "/about/",
label: "关于我们",
children: [
{ href: "/about/", label: "品牌介绍" },
{ href: "/about/#brand-story", label: "品牌故事" },
{ href: "/about/#advantages", label: "核心优势" },
{ href: "/about/#values", label: "品牌价值观" },
],
},
{
href: "/join/",
label: "加盟支持",
children: [
{ href: "/join/", label: "合作概览" },
{ href: "/join/#support-teams", label: "四大支持团队" },
{ href: "/join/#growth-path", label: "门店经营闭环" },
{ href: "/join/#lightweight-start", label: "轻量起步体系" },
{ href: "/contact/?intent=join", label: "加盟详情咨询" },
],
},
{
href: "/faq/",
label: "常见问题",
children: [
{ href: "/faq/", label: "全部问题" },
{ href: "/faq/#project-experience", label: "项目体验" },
{ href: "/faq/#suitability", label: "适用情况" },
{ href: "/faq/#store-support", label: "门店支持" },
{ href: "/faq/#partnership", label: "加盟合作" },
],
},
{
href: "/contact/",
label: "联系合作",
children: [
{ href: "/contact/", label: "联系方式" },
{ href: "/contact/?intent=store", label: "查找附近门店" },
{ href: "/contact/?intent=join", label: "加盟详情咨询" },
{ href: "mailto:sumeiqiao@126.com", label: "发送合作邮件" },
],
},
],
} as const;
---
import "../styles/global.css";
import logo from "../../横向-绿0013.svg";
import { site } from "../data/site";
interface Props {
title: string;
description: string;
image?: string;
ogType?: "website" | "article";
noindex?: boolean;
jsonLd?: Record<string, unknown> | Record<string, unknown>[];
}
const {
title,
description,
image = "/og-cover.svg",
ogType = "website",
noindex = false,
jsonLd = [],
} = Astro.props;
const canonical = new URL(Astro.url.pathname, Astro.site).href;
const ogImage = new URL(image, Astro.site).href;
const organizationLd = {
"@context": "https://schema.org",
"@type": ["HealthAndBeautyBusiness", "Organization"],
"@id": new URL("/#organization", Astro.site).href,
name: site.brand.name,
alternateName: [site.brand.shortName, site.brand.englishName],
legalName: site.brand.legalName,
url: Astro.site?.href,
logo: new URL(logo.src, Astro.site).href,
slogan: site.brand.tagline,
description: site.home.subhead,
email: site.contact.email,
address: {
"@type": "PostalAddress",
streetAddress: site.contact.address,
addressLocality: site.contact.locality,
addressRegion: site.contact.region,
addressCountry: "CN",
},
};
const pageLd = Array.isArray(jsonLd) ? jsonLd : [jsonLd];
const allLd = [organizationLd, ...pageLd.filter((item) => Object.keys(item).length > 0)];
---
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#FAF8F4" />
<meta name="color-scheme" content="light" />
<title>{title}</title>
<meta name="description" content={description} />
<meta name="robots" content={noindex ? "noindex,nofollow" : "index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1"} />
<link rel="canonical" href={canonical} />
<link rel="icon" href={logo.src} type="image/svg+xml" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="alternate" hreflang="zh-CN" href={canonical} />
<link rel="alternate" hreflang="x-default" href={canonical} />
<meta property="og:type" content={ogType} />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:url" content={canonical} />
<meta property="og:image" content={ogImage} />
<meta property="og:site_name" content={site.brand.name} />
<meta property="og:locale" content="zh_CN" />
<meta name="twitter:card" content="summary_large_image" />
<script type="application/ld+json" set:html={JSON.stringify(allLd)} is:inline></script>
</head>
<body>
<a class="skip-link" href="#main-content">跳到主要内容</a>
<slot />
<script is:inline>
const header = document.querySelector('[data-header]');
const syncHeader = () => header?.classList.toggle('is-scrolled', window.scrollY > 16);
addEventListener('scroll', syncHeader, { passive: true });
syncHeader();
const observer = 'IntersectionObserver' in window
? new IntersectionObserver((entries) => entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
observer.unobserve(entry.target);
}
}), { threshold: 0.12 })
: null;
document.querySelectorAll('[data-reveal]').forEach((el) => observer?.observe(el));
document.querySelectorAll('[data-mobile-nav] a').forEach((link) => {
link.addEventListener('click', () => link.closest('details')?.removeAttribute('open'));
});
</script>
</body>
</html>
---
import Base from "../layouts/Base.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
import { site } from "../data/site";
---
<Base title={`页面未找到|${site.brand.name}`} description="你访问的页面不存在。" noindex={true}>
<Header />
<main id="main-content" class="not-found">
<div><strong>404</strong><h1>这一页暂时找不到</h1><p>你可以返回首页,继续了解塑美俏。</p><a class="button" href="/">返回首页</a></div>
</main>
<Footer />
</Base>
---
import Base from "../../layouts/Base.astro";
import Header from "../../components/Header.astro";
import Footer from "../../components/Footer.astro";
import SectionHeading from "../../components/SectionHeading.astro";
import CTA from "../../components/CTA.astro";
import { site } from "../../data/site";
const title = `关于塑美俏|中式经络体龄管理品牌`;
const description = site.about.story[0];
const pageUrl = new URL("/about/", Astro.site).href;
const jsonLd = {
"@context": "https://schema.org",
"@type": "AboutPage",
name: "关于塑美俏",
description,
url: pageUrl,
mainEntity: { "@id": new URL("/#organization", Astro.site).href },
};
---
<Base title={title} description={description} jsonLd={jsonLd}>
<Header />
<main id="main-content">
<section class="page-hero" data-word="ABOUT">
<div class="container page-hero__inner" data-reveal>
<div class="breadcrumb"><a href="/">首页</a> / 关于我们</div>
<div class="eyebrow"><span></span>ABOUT SUMEIQIAO</div>
<h1>让中式经络调理,<br />走进更多人的日常</h1>
<p>{site.about.story[0]}</p>
</div>
</section>
<section class="section-pad section-white" id="brand-story">
<div class="container story-grid">
<div class="story-visual" data-reveal>
<div class="story-visual__quote"><p>让世界体验中式经络调理,改善全民健康。</p><small>OUR MISSION</small></div>
</div>
<div class="story-copy" data-reveal>
<div class="eyebrow"><span></span>FOUNDED IN {site.about.founded}</div>
<h2>{site.about.heading}</h2>
{site.about.story.map((paragraph) => <p>{paragraph}</p>)}
<a class="button button--secondary" href="/join/">了解加盟支持</a>
</div>
</div>
</section>
<section class="section-pad section-tint" id="advantages">
<div class="container">
<SectionHeading eyebrow="WHY SUMEIQIAO" title="稳步增长背后的三件事" intro="服务消费者,也服务好每一家合作门店;品牌长期价值建立在可持续的交付能力上。" align="center" />
<div class="values-grid">
{site.about.advantages.map((item, index) => (
<article class="value-card" data-reveal><span>0{index + 1}</span><h3>{item.title}</h3><p>{item.desc}</p></article>
))}
</div>
</div>
</section>
<section class="section-pad support-section" id="values">
<div class="container">
<SectionHeading eyebrow="OUR VALUES" title="自然、专业、负责、长期" intro="尊重身体规律,清楚说明边界,用更扎实的服务与更长期的陪伴建立信任。" light={true} />
<div class="support-grid">
{[
["自然", "以非侵入式中式经络调理为核心,追求身体状态的自然改善。"],
["专业", "用清楚的服务标准、培训体系与周期管理提升体验一致性。"],
["负责", "不虚构效果,不以绝对承诺代替个人评估与必要的医学判断。"],
["长期", "把消费者体验与门店经营放在短期扩张之前,做长期主义品牌。"],
].map((item, index) => (
<article class="support-card" data-reveal><span>0{index + 1}</span><h3>{item[0]}</h3><p>{item[1]}</p></article>
))}
</div>
</div>
</section>
<CTA title="认识塑美俏,也认识一种更自然的健康管理方式" />
</main>
<Footer />
</Base>
---
import Base from "../../layouts/Base.astro";
import Header from "../../components/Header.astro";
import Footer from "../../components/Footer.astro";
import CTA from "../../components/CTA.astro";
import { site } from "../../data/site";
const title = `联系与合作|${site.brand.name}`;
const description = site.contact.intro;
const pageUrl = new URL("/contact/", Astro.site).href;
const intent = Astro.url.searchParams.get("intent");
const intentCopy = intent === "store"
? "请在邮件中写明所在城市,我们将协助查询附近门店。"
: intent === "join"
? "请在邮件中写明所在城市、现有门店情况与合作需求。"
: "请在邮件中写明所在城市与具体需求。";
const jsonLd = [
{
"@context": "https://schema.org",
"@type": "ContactPage",
name: "联系塑美俏",
description,
url: pageUrl,
mainEntity: { "@id": new URL("/#organization", Astro.site).href },
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: [
{ "@type": "ListItem", position: 1, name: "首页", item: Astro.site?.href },
{ "@type": "ListItem", position: 2, name: "联系与合作", item: pageUrl },
],
},
];
---
<Base title={title} description={description} jsonLd={jsonLd}>
<Header />
<main id="main-content">
<section class="page-hero" data-word="CONTACT">
<div class="container page-hero__inner" data-reveal>
<div class="breadcrumb"><a href="/">首页</a> / 联系与合作</div>
<div class="eyebrow"><span></span>GET IN TOUCH</div>
<h1>把你的需求,<br />认真告诉我们</h1>
<p>{site.contact.intro}</p>
</div>
</section>
<section class="section-pad" id="contact-methods">
<div class="container">
<div class="contact-grid">
<article class="contact-card" data-reveal>
<span class="contact-card__icon" aria-hidden="true">✉</span>
<h2>邮件咨询</h2>
<p>项目、门店与加盟合作均可通过邮箱联系。</p>
<a href={`mailto:${site.contact.email}?subject=塑美俏官网咨询`}>{site.contact.email} ↗</a>
</article>
<article class="contact-card" data-reveal>
<span class="contact-card__icon" aria-hidden="true">⌖</span>
<h2>公司地址</h2>
<address>{site.contact.address}<br />{site.brand.legalName}</address>
<a href={`https://uri.amap.com/search?keyword=${encodeURIComponent(site.contact.address)}`} target="_blank" rel="noreferrer">在地图中查看 ↗</a>
</article>
<article class="contact-card" data-reveal>
<span class="contact-card__icon" aria-hidden="true">◎</span>
<h2>官方网站</h2>
<p>品牌信息、项目内容与合作支持以官网更新为准。</p>
<a href="https://www.sumeiqiao.com">{site.contact.website} ↗</a>
</article>
</div>
<p class="contact-note">{intentCopy} 当前品牌资料未提供公开客服电话,因此本站不展示或虚构联系电话;邮件发出后请留意回复。</p>
</div>
</section>
<CTA eyebrow="CONTACT" title="塑美俏 · 联系与合作" text={intentCopy} />
</main>
<Footer />
</Base>
---
import Base from "../../layouts/Base.astro";
import Header from "../../components/Header.astro";
import Footer from "../../components/Footer.astro";
import CTA from "../../components/CTA.astro";
import { site } from "../../data/site";
const title = `常见问题|${site.brand.name}`;
const description = "塑美俏项目体验、适用情况、门店支持与加盟合作常见问题解答。";
const pageUrl = new URL("/faq/", Astro.site).href;
const jsonLd = [
{
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: site.faq.map((item) => ({
"@type": "Question",
name: item.q,
acceptedAnswer: { "@type": "Answer", text: item.a },
})),
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: [
{ "@type": "ListItem", position: 1, name: "首页", item: Astro.site?.href },
{ "@type": "ListItem", position: 2, name: "常见问题", item: pageUrl },
],
},
];
---
<Base title={title} description={description} jsonLd={jsonLd}>
<Header />
<main id="main-content">
<section class="page-hero" data-word="FAQ">
<div class="container page-hero__inner" data-reveal>
<div class="breadcrumb"><a href="/">首页</a> / 常见问题</div>
<div class="eyebrow"><span></span>FREQUENTLY ASKED</div>
<h1>先把疑问,<br />一件件说清楚</h1>
<p>{description} 如有未覆盖的问题,欢迎邮件联系我们。</p>
</div>
</section>
<section class="section-pad section-white">
<div class="container faq-layout">
<div>
<div class="eyebrow"><span></span>PROJECT & PARTNER</div>
<h2 style="font-family:var(--serif);font-size:42px;font-weight:600;color:var(--ink-green);line-height:1.25;margin-top:18px">项目体验与<br />合作支持</h2>
<p style="color:var(--muted)">以下回答基于品牌当前资料。个人身体情况与门店经营条件不同,具体以线下评估和正式合作文件为准。</p>
</div>
<div class="faq-list">
{site.faq.map((item, index) => (
<details
class="faq-item"
id={index === 0 ? "project-experience" : index === 2 ? "suitability" : index === 3 ? "store-support" : index === 4 ? "partnership" : `question-${index + 1}`}
data-reveal
>
<summary>{item.q}</summary>
<div class="faq-answer"><p>{item.a}</p></div>
</details>
))}
</div>
</div>
</section>
<CTA title="还有其他问题?" text="写明所在城市、关注项目或合作需求,我们会把信息转交给对应人员。" />
</main>
<Footer />
</Base>
---
import Base from "../layouts/Base.astro";
import Header from "../components/Header.astro";
import Footer from "../components/Footer.astro";
import SectionHeading from "../components/SectionHeading.astro";
import ServiceCard from "../components/ServiceCard.astro";
import CTA from "../components/CTA.astro";
import { site } from "../data/site";
const title = `${site.brand.name}|中式经络调理与体龄管理`;
const description = site.home.subhead;
const jsonLd = [
{
"@context": "https://schema.org",
"@type": "WebSite",
"@id": new URL("/#website", Astro.site).href,
name: site.brand.name,
alternateName: site.brand.shortName,
url: Astro.site?.href,
description,
inLanguage: "zh-CN",
publisher: { "@id": new URL("/#organization", Astro.site).href },
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: site.faq.slice(0, 4).map((item) => ({
"@type": "Question",
name: item.q,
acceptedAnswer: { "@type": "Answer", text: item.a },
})),
},
];
---
<Base title={title} description={description} jsonLd={jsonLd}>
<Header />
<main id="main-content">
<section class="hero">
<div class="hero__ambient" aria-hidden="true">
<span>体质</span><span>体肤</span><span>体脂</span><span>体型</span>
</div>
<div class="container hero__inner">
<div class="hero__copy" data-reveal>
<div class="eyebrow"><span></span>{site.home.eyebrow}</div>
<h1>中式经络调理,<em>让身体自然轻盈</em></h1>
<p>{site.home.subhead}</p>
<div class="hero__actions">
<a class="button" href="/contact/?intent=join">加盟详情咨询 <span>↗</span></a>
<a class="button button--secondary" href="/contact/?intent=store">查找附近门店</a>
</div>
<div class="hero__meta" aria-label="服务特点">
<span>非侵入式调理</span>
<span>减重 · 塑形 · 亚健康管理</span>
<span>因人制定周期方案</span>
</div>
</div>
</div>
</section>
<section class="stats-band" aria-label="塑美俏品牌数据">
<div class="container stats-grid" data-reveal>
{site.home.stats.map((stat) => (
<div class="stat"><strong>{stat.value}</strong><span>{stat.label}</span></div>
))}
</div>
</section>
<section class="section-pad" id="body-age">
<div class="container">
<SectionHeading
eyebrow="BODY AGE MANAGEMENT"
title="管理的不只是体重,更是身体的整体状态"
intro="塑美俏把体质、体肤、体脂与体型放在一套管理体系里,从根本状态出发,追求更自然、更可持续的变化。"
align="center"
/>
<div class="pillars-grid">
{site.pillars.map((pillar) => (
<article class="pillar" data-reveal>
<span class="pillar__number">{pillar.number}</span>
<h3>{pillar.title}</h3>
<p>{pillar.desc}</p>
</article>
))}
</div>
</div>
</section>
<section class="section-pad section-tint" id="services">
<div class="container services-layout">
<SectionHeading
eyebrow="OUR SERVICES"
title="一套由内而外的体龄管理方案"
intro="围绕减重、排湿排酸、塑形与亚健康管理四个方向,结合个人状态制定周期方案。"
/>
<div class="service-grid">
{site.services.map((service) => <ServiceCard service={service} />)}
</div>
</div>
</section>
<section class="section-pad section-white" id="about">
<div class="container story-grid">
<div class="story-visual" data-reveal>
<div class="story-visual__quote">
<p>“靠谱,做一家深度交付型公司。”</p>
<small>SUMEIQIAO · BRAND BELIEF</small>
</div>
</div>
<div class="story-copy" data-reveal>
<div class="eyebrow"><span></span>ABOUT SUMEIQIAO</div>
<h2>{site.about.heading}</h2>
<p>{site.about.story[0]}</p>
<div class="story-points">
{site.about.advantages.map((item, index) => (
<div class="story-point">
<span>{index + 1}</span>
<div><b>{item.title}</b><small>{item.desc}</small></div>
</div>
))}
</div>
<a class="text-link" href="/about/">了解品牌故事 <span>↗</span></a>
</div>
</div>
</section>
<section class="section-pad support-section" id="support">
<div class="container">
<SectionHeading
eyebrow="STORE SUPPORT"
title="四支团队,把支持落到门店日常"
intro="从技术到销售、从日常服务到持续学习,让合作不是一次签约,而是一段长期共建。"
light={true}
/>
<div class="support-grid">
{site.support.map((item, index) => (
<article class="support-card" data-reveal>
<span>0{index + 1}</span><h3>{item.title}</h3><p>{item.desc}</p>
</article>
))}
</div>
</div>
</section>
<section class="section-pad section-white" id="faq">
<div class="container faq-layout">
<SectionHeading
eyebrow="FAQ"
title="关于塑美俏,你可能想知道"
intro="先把项目、适用情况与合作支持说明白,再决定是否进一步了解。"
/>
<div class="faq-list">
{site.faq.slice(0, 4).map((item) => (
<details class="faq-item" open data-reveal>
<summary>{item.q}</summary>
<div class="faq-answer"><p>{item.a}</p></div>
</details>
))}
<a class="text-link" style="margin-top:28px" href="/faq/">查看全部常见问题 <span>↗</span></a>
</div>
</div>
</section>
<CTA />
</main>
<Footer />
</Base>
---
import Base from "../../layouts/Base.astro";
import Header from "../../components/Header.astro";
import Footer from "../../components/Footer.astro";
import SectionHeading from "../../components/SectionHeading.astro";
import CTA from "../../components/CTA.astro";
import { site } from "../../data/site";
const title = `加盟支持|${site.brand.name}`;
const description = "了解塑美俏面向合作门店的技术、销售、客服与商学院支持,以及从引流、体验转化到门店经营的陪跑路径。";
const pageUrl = new URL("/join/", Astro.site).href;
const jsonLd = {
"@context": "https://schema.org",
"@type": "WebPage",
name: "塑美俏加盟支持",
description,
url: pageUrl,
about: { "@id": new URL("/#organization", Astro.site).href },
};
---
<Base title={title} description={description} jsonLd={jsonLd}>
<Header />
<main id="main-content">
<section class="page-hero" data-word="PARTNER">
<div class="container page-hero__inner" data-reveal>
<div class="breadcrumb"><a href="/">首页</a> / 加盟支持</div>
<div class="eyebrow"><span></span>PARTNER WITH US</div>
<h1>签约只是开始,<br />交付才是答案</h1>
<p>塑美俏以深度交付为核心,围绕技术、活动、运营和培训持续陪伴合作门店,把方法真正落到经营日常。</p>
</div>
</section>
<section class="section-pad support-section" id="support-teams">
<div class="container">
<SectionHeading eyebrow="FOUR SUPPORT TEAMS" title="四大团队,全程协同" intro="合作门店遇到的问题不止一种,所以支持也不是一条单线。" light={true} />
<div class="support-grid">
{site.support.map((item, index) => (
<article class="support-card" data-reveal><span>0{index + 1}</span><h3>{item.title}</h3><p>{item.desc}</p></article>
))}
</div>
</div>
</section>
<section class="section-pad section-white" id="growth-path">
<div class="container">
<SectionHeading eyebrow="STORE GROWTH" title="从一次体验,到一套经营闭环" intro="围绕获客、体验、转化、复购与区域发展,帮助门店建立自己的经营节奏。" align="center" />
<div class="join-flow">
{[
["内容引流", "通过本地内容与体验活动,让目标顾客先认识门店。"],
["体验转化", "用清楚的项目介绍与专业体验建立第一轮信任。"],
["升单锁客", "围绕个人情况规划周期,让服务价值更容易被理解。"],
["活动经营", "通过标准活动与现场陪跑,提升团队执行与转化能力。"],
["区域发展", "在门店模型稳定后,逐步探索更广的区域合作空间。"],
].map((item, index) => (
<article class="join-step" data-reveal><span>0{index + 1}</span><h3>{item[0]}</h3><p>{item[1]}</p></article>
))}
</div>
</div>
</section>
<section class="section-pad section-tint" id="lightweight-start">
<div class="container story-grid">
<div class="story-copy" data-reveal>
<div class="eyebrow"><span></span>LIGHTWEIGHT START</div>
<h2>少而精的产品体系,更容易落地</h2>
<p>核心产品体系精简,减少复杂库存与学习负担;配合标准流程和分层培训,让新手创业或老店嫁接都能更清楚地开始。</p>
<div class="story-points">
<div class="story-point"><span>1</span><div><b>产品结构清晰</b><small>围绕核心项目组合,不以大量铺货作为合作前提。</small></div></div>
<div class="story-point"><span>2</span><div><b>操作标准明确</b><small>技术老师团队提供项目培训与日常答疑。</small></div></div>
<div class="story-point"><span>3</span><div><b>经营持续陪跑</b><small>销售、客服与商学院协同支持门店成长。</small></div></div>
</div>
</div>
<div class="story-visual" data-reveal>
<div class="story-visual__quote"><p>“不是招完即走,而是一起把门店做好。”</p><small>DEEP DELIVERY</small></div>
</div>
</div>
<div class="container"><p class="contact-note">合作提醒:具体投入、费用、合同条款和经营结果会因城市、门店与执行情况而异。请在签约前完整了解并独立评估经营风险,官网不作收益保证。</p></div>
</section>
<CTA title="想了解你所在城市的合作机会?" text="邮件告诉我们所在城市、现有门店情况与关注问题,我们会安排对应人员进一步沟通。" />
</main>
<Footer />
</Base>
import type { APIRoute } from "astro";
import { site } from "../data/site";
export const GET: APIRoute = ({ site: siteUrl }) => {
const base = (siteUrl?.href || "https://www.sumeiqiao.com/").replace(/\/$/, "");
const services = site.services.map((item) => `- ${item.name}${item.intro}`).join("\n");
const advantages = site.about.advantages.map((item) => `- ${item.title}${item.desc}`).join("\n");
const faq = site.faq.map((item) => `- 问:${item.q}\n 答:${item.a}`).join("\n");
const text = `# ${site.brand.name}
> ${site.brand.tagline}${site.home.subhead}
## 官方主体
- 品牌:${site.brand.name}${site.brand.englishName}
- 运营主体:${site.brand.legalName}
- 成立时间:${site.about.founded}
- 所属行业:${site.brand.industry}
- 地址:${site.contact.address}
- 官方邮箱:${site.contact.email}
- 官方网站:${base}/
## 核心服务
${services}
## 品牌差异化
${advantages}
## 关键数据
${site.home.stats.map((item) => `- ${item.label}${item.value}`).join("\n")}
## 常见问题
${faq}
## 重要说明
- 塑美俏提供日常健康管理相关服务,不替代医疗诊断与治疗。
- 个人体验与经营结果均可能因实际情况而异,官网不作绝对效果或收益承诺。
## 主要页面
- 体龄管理:${base}/services/
- 关于塑美俏:${base}/about/
- 加盟支持:${base}/join/
- 常见问题:${base}/faq/
- 联系合作:${base}/contact/
`;
return new Response(text, { headers: { "Content-Type": "text/plain; charset=utf-8" } });
};
---
import Base from "../../layouts/Base.astro";
import Header from "../../components/Header.astro";
import Footer from "../../components/Footer.astro";
import SectionHeading from "../../components/SectionHeading.astro";
import CTA from "../../components/CTA.astro";
import { site } from "../../data/site";
const title = `体龄管理服务|${site.brand.name}`;
const description = "了解塑美俏体龄管理减重、排湿排酸、体型塑形与亚健康调理四类服务,以及评估、方案、调理与跟进流程。";
const pageUrl = new URL("/services/", Astro.site).href;
const jsonLd = [
{
"@context": "https://schema.org",
"@type": "ItemList",
name: "塑美俏体龄管理服务",
itemListElement: site.services.map((service, index) => ({
"@type": "ListItem",
position: index + 1,
item: {
"@type": "Service",
name: service.name,
description: service.intro,
provider: { "@id": new URL("/#organization", Astro.site).href },
url: `${pageUrl}#${service.slug}`,
areaServed: "CN",
},
})),
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: [
{ "@type": "ListItem", position: 1, name: "首页", item: Astro.site?.href },
{ "@type": "ListItem", position: 2, name: "体龄管理", item: pageUrl },
],
},
];
---
<Base title={title} description={description} jsonLd={jsonLd}>
<Header />
<main id="main-content">
<section class="page-hero" data-word="SERVICES">
<div class="container page-hero__inner" data-reveal>
<div class="breadcrumb"><a href="/">首页</a> / 体龄管理</div>
<div class="eyebrow"><span></span>BODY AGE SERVICES</div>
<h1>从体质出发,<br />让管理更完整</h1>
<p>{description}</p>
</div>
</section>
<section class="section-pad">
<div class="container detail-grid">
{site.services.map((service) => (
<article class="detail-card" id={service.slug} data-reveal>
<div class="detail-card__number">{service.index}</div>
<div>
<h2>{service.name}</h2>
<p>{service.intro}</p>
<div class="detail-facts">
<div class="detail-fact"><span>适合人群</span><b>{service.audience}</b></div>
<div class="detail-fact"><span>核心方向</span><b>{service.value}</b></div>
</div>
<p class="detail-note">{service.note}</p>
</div>
</article>
))}
</div>
</section>
<section class="section-pad section-white">
<div class="container">
<SectionHeading
eyebrow="THE PROCESS"
title="清楚的四步服务路径"
intro="先了解,再方案;先说清楚,再开始。每一步都围绕个人实际状态推进。"
align="center"
/>
<div class="process-grid">
<article class="process-step" data-reveal><h3>了解体质</h3><p>沟通日常状态、困扰与目标,识别需要重点关注的方向。</p></article>
<article class="process-step" data-reveal><h3>制定方案</h3><p>结合个人基础与时间安排,明确调理项目、周期和注意事项。</p></article>
<article class="process-step" data-reveal><h3>经络调理</h3><p>按门店标准流程进行非侵入式调理,记录每个阶段的身体感受。</p></article>
<article class="process-step" data-reveal><h3>周期跟进</h3><p>根据变化与反馈调整节奏,帮助形成更可持续的管理习惯。</p></article>
</div>
</div>
</section>
<CTA title="哪一种管理方向更适合你?" text="联系附近门店,说明你的目标与身体情况,获得更具体的项目介绍。" />
</main>
<Footer />
</Base>
:root {
--primary: #16ae9c;
--primary-dark: #11897b;
--accent-teal: #118e9b;
--deep-teal: #0e727c;
--secondary: #9db8ae;
--secondary-light: #e4efea;
--bg: #faf8f4;
--surface: #ffffff;
--text: #333333;
--muted: #6b7280;
--border: #d6e4de;
--footer: #82b5a6;
--footer-ink: #173f38;
--ink-green: #244f48;
--sans: "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", sans-serif;
--serif: var(--sans);
--container: min(1180px, calc(100vw - 48px));
--shadow: 0 24px 70px rgba(36, 79, 72, 0.1);
}
*, *::before, *::after { box-sizing: border-box; }
html {
scroll-behavior: smooth;
background: var(--bg);
}
body {
margin: 0;
color: var(--text);
background: var(--bg);
font-family: var(--sans);
font-size: 16px;
line-height: 1.75;
-webkit-font-smoothing: antialiased;
}
body::before {
content: "";
position: fixed;
inset: 0;
z-index: -2;
pointer-events: none;
background-image: radial-gradient(rgba(95, 127, 118, 0.09) 0.6px, transparent 0.6px);
background-size: 18px 18px;
mask-image: linear-gradient(to bottom, black, transparent 36%);
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
h1, h2, h3, h4, p { margin-top: 0; }
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }
.container { width: var(--container); margin-inline: auto; }
section[id], .faq-item[id] { scroll-margin-top: 112px; }
.section-pad { padding: 112px 0; }
.section-pad--small { padding: 78px 0; }
.section-tint { background: var(--secondary-light); }
.section-white { background: var(--surface); }
.skip-link {
position: fixed;
left: 16px;
top: -80px;
z-index: 1000;
padding: 10px 16px;
color: white;
background: var(--primary-dark);
border-radius: 999px;
}
.skip-link:focus { top: 16px; }
.top-note {
color: white;
background: var(--primary);
font-size: 12px;
letter-spacing: 0.06em;
}
.top-note__inner {
min-height: 34px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
}
.top-note a { color: white; opacity: 0.9; }
.top-note a:hover { color: white; opacity: 1; }
.site-header {
position: sticky;
top: 0;
z-index: 50;
background: rgba(250, 248, 244, 0.9);
border-bottom: 1px solid rgba(214, 228, 222, 0.7);
backdrop-filter: blur(18px);
transition: box-shadow 0.25s ease, background 0.25s ease;
}
.site-header.is-scrolled { background: rgba(255, 255, 255, 0.94); box-shadow: 0 10px 30px rgba(36, 79, 72, 0.07); }
.site-header__inner {
height: 82px;
display: grid;
grid-template-columns: 170px 1fr auto;
align-items: center;
gap: 34px;
}
.brand { display: inline-flex; align-items: center; width: max-content; }
.brand img { width: 128px; height: auto; }
.desktop-nav {
height: 100%;
}
.desktop-nav > ul {
height: 100%;
margin: 0;
padding: 0;
display: flex;
align-items: stretch;
justify-content: center;
gap: clamp(18px, 2.2vw, 34px);
list-style: none;
}
.nav-item {
position: relative;
display: flex;
align-items: stretch;
}
.nav-link {
position: relative;
display: inline-flex;
align-items: center;
gap: 5px;
padding: 2px 0 0;
color: #4a514f;
font-size: 14px;
font-weight: 500;
white-space: nowrap;
}
.nav-link::after {
content: "";
position: absolute;
left: 50%;
bottom: 17px;
width: 0;
height: 2px;
background: var(--primary);
transform: translateX(-50%);
transition: width 0.2s ease;
}
.nav-chevron { color: var(--secondary); font-size: 12px; transform: translateY(-1px); transition: transform .2s ease; }
.nav-link:hover, .nav-link[aria-current="page"], .nav-item:focus-within > .nav-link { color: var(--primary-dark); }
.nav-link:hover::after, .nav-link[aria-current="page"]::after, .nav-item:focus-within > .nav-link::after { width: 18px; }
.nav-item:hover .nav-chevron, .nav-item:focus-within .nav-chevron { transform: translateY(1px) rotate(180deg); }
.nav-dropdown {
position: absolute;
top: calc(100% - 5px);
left: 50%;
z-index: 60;
width: 232px;
padding: 11px;
background: rgba(255,255,255,.98);
border: 1px solid var(--border);
box-shadow: 0 22px 52px rgba(36,79,72,.13);
opacity: 0;
visibility: hidden;
pointer-events: none;
transform: translate(-50%, 10px);
transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
}
.nav-dropdown::before { content: ""; position: absolute; top: -12px; left: 0; width: 100%; height: 12px; }
.nav-item:hover .nav-dropdown, .nav-item:focus-within .nav-dropdown { opacity: 1; visibility: visible; pointer-events: auto; transform: translate(-50%, 0); }
.nav-dropdown ul { margin: 0; padding: 0; list-style: none; }
.nav-dropdown li + li { margin-top: 2px; }
.nav-dropdown a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px; color: #4f5b57; font-size: 13px; font-weight: 500; transition: color .18s ease, background .18s ease, padding .18s ease; }
.nav-dropdown a span { color: var(--secondary); font-size: 11px; }
.nav-dropdown a:hover, .nav-dropdown a:focus-visible { padding-left: 12px; color: var(--primary-dark); background: var(--secondary-light); outline: none; }
.button {
display: inline-flex;
min-height: 50px;
align-items: center;
justify-content: center;
gap: 10px;
padding: 0 27px;
color: white;
background: var(--primary);
border: 1px solid var(--primary);
border-radius: 999px;
font-weight: 600;
font-size: 14px;
letter-spacing: 0.02em;
transition: transform 0.2s ease, background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.button:hover { background: var(--primary-dark); border-color: var(--primary-dark); transform: translateY(-2px); }
.button--small { min-height: 42px; padding-inline: 22px; font-size: 13px; }
.button--secondary { color: var(--ink-green); background: transparent; border-color: var(--secondary); }
.button--secondary:hover { color: white; }
.button--white { color: var(--primary-dark); background: white; border-color: white; }
.button--white:hover { color: white; background: transparent; border-color: rgba(255,255,255,.65); }
.button--ghost-light { color: white; background: transparent; border-color: rgba(255,255,255,.45); }
.button--ghost-light:hover { background: white; border-color: white; color: var(--primary-dark); }
.mobile-nav { display: none; position: relative; }
.mobile-nav summary { list-style: none; width: 42px; height: 42px; display: grid; place-content: center; gap: 5px; border: 1px solid var(--border); border-radius: 50%; cursor: pointer; }
.mobile-nav summary::-webkit-details-marker { display: none; }
.mobile-nav summary span { display: block; width: 17px; height: 1.5px; background: var(--ink-green); }
.mobile-nav nav { position: absolute; top: 52px; right: 0; width: min(344px, calc(100vw - 32px)); max-height: min(74vh, 680px); padding: 18px; display: grid; gap: 5px; background: white; border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow); overflow-y: auto; }
.mobile-nav__group { padding: 7px 0 10px; border-bottom: 1px solid #edf2f0; }
.mobile-nav__primary { display: block; padding: 5px 10px; color: var(--ink-green); font-weight: 600; }
.mobile-nav__primary[aria-current="page"] { color: var(--primary-dark); }
.mobile-subnav { padding: 3px 10px 0; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.mobile-subnav a { color: var(--muted); font-size: 11px; }
.mobile-subnav a:hover { color: var(--primary-dark); }
.mobile-nav .button { margin-top: 8px; }
.eyebrow {
display: inline-flex;
align-items: center;
gap: 10px;
color: var(--primary-dark);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.eyebrow span { width: 34px; height: 1px; background: var(--secondary); }
.eyebrow--light { color: #e6f7f1; }
.eyebrow--light span { background: rgba(255,255,255,.6); }
.section-heading { max-width: 720px; margin-bottom: 54px; }
.section-heading h2 {
margin: 18px 0 16px;
color: var(--ink-green);
font-family: var(--serif);
font-size: clamp(34px, 4.3vw, 56px);
font-weight: 600;
line-height: 1.2;
letter-spacing: -0.035em;
}
.section-heading p { max-width: 660px; margin-bottom: 0; color: var(--muted); font-size: 17px; }
.section-heading--center { margin-inline: auto; text-align: center; }
.section-heading--center .eyebrow { justify-content: center; }
.section-heading--center p { margin-inline: auto; }
.section-heading--light h2, .section-heading--light p { color: white; }
.section-heading--light p { opacity: 0.72; }
.text-link { display: inline-flex; align-items: center; gap: 8px; color: var(--primary-dark); font-size: 14px; font-weight: 600; }
.text-link span { transition: transform 0.2s ease; }
.text-link:hover span { transform: translate(3px, -3px); }
.hero {
position: relative;
overflow: hidden;
min-height: 690px;
display: grid;
align-items: center;
background: linear-gradient(135deg, #faf8f4 0%, #eef6f2 100%);
}
.hero::before {
content: "中式经络调理";
position: absolute;
right: -20px;
top: 72px;
color: rgba(15,118,110,.035);
font-size: clamp(92px, 12vw, 172px);
font-weight: 700;
letter-spacing: .08em;
line-height: 1;
white-space: nowrap;
}
.hero::after {
content: "SUMEIQIAO";
position: absolute;
right: -22px;
bottom: -35px;
color: rgba(95, 127, 118, 0.045);
font-family: Georgia, serif;
font-size: clamp(92px, 14vw, 210px);
letter-spacing: 0.02em;
line-height: 1;
}
.hero__inner {
position: relative;
z-index: 1;
padding: 104px 0 116px;
}
.hero__copy { max-width: 920px; }
.hero__copy h1 {
margin: 24px 0 22px;
color: var(--text);
font-family: var(--serif);
max-width: 900px;
font-size: clamp(48px, 6vw, 76px);
font-weight: 600;
line-height: 1.18;
letter-spacing: -0.025em;
}
.hero__copy h1 em { display: block; color: var(--primary); font-style: normal; }
.hero__copy > p { max-width: 720px; margin-bottom: 32px; color: #636c69; font-size: 18px; line-height: 1.9; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 14px; }
.hero__meta { margin-top: 38px; display: flex; flex-wrap: wrap; gap: 12px 24px; color: var(--ink-green); font-size: 13px; }
.hero__meta span { display: inline-flex; align-items: center; gap: 8px; }
.hero__meta span::before { content: ""; width: 5px; height: 5px; background: var(--secondary); border-radius: 50%; }
.hero__ambient {
position: absolute;
z-index: 0;
right: max(24px, calc((100vw - 1180px) / 2));
bottom: 82px;
display: grid;
grid-template-columns: repeat(2, auto);
gap: 20px 30px;
color: rgba(15,118,110,.10);
font-size: clamp(26px, 3vw, 44px);
font-weight: 600;
letter-spacing: .16em;
}
.hero__ambient span { padding-top: 8px; border-top: 1px solid rgba(15,118,110,.13); }
.stats-band { position: relative; z-index: 2; margin-top: -34px; }
.stats-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
padding: 28px 38px;
background: white;
border: 1px solid rgba(214,228,222,.9);
border-radius: 24px;
box-shadow: var(--shadow);
}
.stat { padding: 10px 28px; border-right: 1px solid var(--border); }
.stat:last-child { border-right: 0; }
.stat strong { display: block; color: var(--primary-dark); font-family: Georgia, var(--serif); font-size: clamp(30px, 3.2vw, 45px); font-weight: 500; line-height: 1.2; }
.stat span { color: var(--muted); font-size: 13px; }
.pillars-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: 24px; overflow: hidden; }
.pillar { position: relative; min-height: 320px; padding: 32px; background: white; overflow: hidden; }
.pillar::before { content: ""; position: absolute; width: 160px; height: 160px; right: -90px; top: -90px; border: 1px solid var(--secondary-light); border-radius: 50%; transition: transform .35s ease; }
.pillar:hover::before { transform: scale(1.35); }
.pillar__number { color: var(--secondary); font-family: Georgia, serif; font-size: 13px; }
.pillar h3 { margin: 95px 0 14px; color: var(--ink-green); font-family: var(--serif); font-size: 27px; font-weight: 600; }
.pillar p { margin: 0; color: var(--muted); font-size: 14px; }
.services-layout { display: grid; grid-template-columns: 340px 1fr; align-items: start; gap: 80px; }
.services-layout .section-heading { position: sticky; top: 128px; }
.service-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.service-card { min-height: 430px; padding: 30px; display: flex; flex-direction: column; background: white; border: 1px solid var(--border); border-radius: 22px; transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease; scroll-margin-top: 120px; }
.service-card:hover { transform: translateY(-6px); border-color: var(--secondary); box-shadow: 0 24px 54px rgba(36,79,72,.1); }
.service-card__top { display: flex; align-items: center; justify-content: space-between; }
.service-card__index { color: var(--secondary); font-family: Georgia, serif; font-size: 13px; }
.service-card__type { color: #92a39d; font-size: 9px; font-weight: 600; letter-spacing: .14em; }
.service-card h3 { margin: 38px 0 14px; color: var(--ink-green); font-family: var(--serif); font-size: 28px; font-weight: 600; }
.service-card > p { color: var(--muted); font-size: 14px; }
.service-card dl { margin: 8px 0 28px; }
.service-card dl div { padding: 9px 0; display: grid; grid-template-columns: 72px 1fr; gap: 14px; border-top: 1px solid #edf2f0; font-size: 12px; }
.service-card dt { color: #89938f; }
.service-card dd { margin: 0; color: #4b5652; }
.service-card .text-link { margin-top: auto; }
.story-grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: 90px; align-items: center; }
.story-visual { position: relative; min-height: 360px; padding: 54px 0; display: flex; align-items: center; background: transparent; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); overflow: hidden; }
.story-visual::before { display: none; }
.story-visual::after { content: "2023"; position: absolute; right: -8px; bottom: -42px; color: rgba(15,118,110,.055); font-size: 164px; font-weight: 700; line-height: 1; letter-spacing: -.06em; }
.story-visual__quote { position: relative; z-index: 1; max-width: 440px; padding: 0; color: var(--ink-green); background: transparent; }
.story-visual__quote p { margin-bottom: 18px; font-size: clamp(28px, 3vw, 42px); font-weight: 600; line-height: 1.45; letter-spacing: -.02em; }
.story-visual__quote small { color: var(--primary-dark); opacity: .62; font-weight: 600; letter-spacing: .12em; }
.story-copy h2 { margin: 17px 0 25px; color: var(--ink-green); font-family: var(--serif); font-size: clamp(36px, 4.2vw, 54px); font-weight: 600; line-height: 1.28; }
.story-copy > p { color: var(--muted); font-size: 16px; }
.story-points { display: grid; gap: 10px; margin: 30px 0 34px; }
.story-point { padding: 16px 0; display: grid; grid-template-columns: 34px 1fr; gap: 14px; border-top: 1px solid var(--border); }
.story-point span { width: 28px; height: 28px; display: grid; place-content: center; color: white; background: var(--primary); border-radius: 50%; font-size: 12px; }
.story-point b { display: block; color: var(--ink-green); }
.story-point small { color: var(--muted); }
.support-section { position: relative; color: var(--ink-green); background: var(--secondary-light); overflow: hidden; }
.support-section::before { content: ""; position: absolute; width: 540px; height: 540px; right: -180px; bottom: -280px; border: 1px solid rgba(15,118,110,.12); border-radius: 50%; }
.support-section .section-heading--light h2 { color: var(--ink-green); }
.support-section .section-heading--light p { color: var(--muted); opacity: 1; }
.support-section .eyebrow--light { color: var(--primary-dark); }
.support-section .eyebrow--light span { background: var(--secondary); }
.support-grid { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.support-card { min-height: 260px; padding: 27px; background: var(--surface); border: 1px solid var(--border); border-radius: 18px; box-shadow: 0 16px 34px rgba(36,79,72,.07); }
.support-card > span { display: block; width: max-content; padding-bottom: 10px; color: var(--primary-dark); border-bottom: 1px solid var(--secondary); font-family: Georgia, serif; font-size: 12px; letter-spacing: .08em; }
.support-card h3 { margin: 45px 0 12px; color: var(--ink-green); font-family: var(--serif); font-size: 23px; font-weight: 600; }
.support-card p { margin: 0; color: var(--muted); font-size: 13px; }
.faq-layout { display: grid; grid-template-columns: 360px 1fr; gap: 80px; align-items: start; }
.faq-layout .section-heading { position: sticky; top: 128px; }
.faq-list { border-top: 1px solid var(--border); }
.faq-item { border-bottom: 1px solid var(--border); }
.faq-item summary { position: relative; padding: 25px 56px 25px 0; color: var(--ink-green); cursor: pointer; list-style: none; font-size: 17px; font-weight: 600; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; position: absolute; right: 8px; top: 23px; width: 30px; height: 30px; display: grid; place-content: center; color: var(--primary-dark); border: 1px solid var(--border); border-radius: 50%; font-size: 18px; font-weight: 400; }
.faq-item[open] summary::after { content: "−"; background: var(--secondary-light); }
.faq-answer { padding: 0 56px 24px 0; color: var(--muted); }
.faq-answer p { margin: 0; }
.cta-panel { position: relative; padding: 104px 0; background: var(--primary-dark); overflow: hidden; }
.cta-panel__inner { position: relative; min-height: 0; padding: 0; display: grid; grid-template-columns: 1fr; justify-items: center; gap: 30px; color: white; background: transparent; text-align: center; }
.cta-panel .eyebrow { justify-content: center; }
.cta-panel h2 { margin: 16px 0 10px; font-family: var(--serif); font-size: clamp(36px, 4vw, 54px); font-weight: 600; }
.cta-panel p { max-width: 610px; margin: 0 auto; color: rgba(255,255,255,.78); }
.cta-panel__actions { position: relative; z-index: 2; display: flex; justify-content: center; gap: 12px; }
.site-footer { padding: 78px 0 24px; color: white; background: #101413; }
.footer-grid { display: grid; grid-template-columns: 1.5fr .75fr .9fr 1.2fr; gap: 60px; padding-bottom: 58px; }
.footer-logo { display: inline-flex; padding: 10px 18px; background: rgba(255,255,255,.93); border-radius: 14px; }
.footer-logo img { width: 120px; height: auto; }
.footer-brand p { max-width: 290px; margin: 24px 0 20px; color: rgba(255,255,255,.7); }
.footer-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.footer-tags span { padding: 5px 0; color: var(--primary); font-size: 11px; }
.footer-grid h2 { margin-bottom: 20px; color: white; font-size: 14px; letter-spacing: .08em; }
.footer-grid > div:not(.footer-brand) > a, .footer-grid address { display: block; margin: 10px 0; color: rgba(255,255,255,.68); font-size: 13px; font-style: normal; }
.footer-grid a:hover { color: var(--primary); }
.footer-arrow { padding-top: 15px; color: var(--primary) !important; }
.footer-arrow span { display: inline-block; margin-left: 4px; }
.footer-bottom { padding-top: 22px; display: flex; justify-content: space-between; gap: 24px; border-top: 1px solid rgba(255,255,255,.14); color: rgba(255,255,255,.5); font-size: 11px; }
.footer-bottom p { margin: 0; }
.page-hero { position: relative; padding: 92px 0 86px; background: linear-gradient(135deg, #faf8f4, #eaf4ef); overflow: hidden; }
.page-hero::after { content: attr(data-word); position: absolute; right: -15px; bottom: -36px; color: rgba(15,118,110,.045); font-family: Georgia, serif; font-size: clamp(90px, 15vw, 210px); line-height: 1; }
.page-hero__inner { position: relative; z-index: 1; max-width: 850px; }
.page-hero h1 { margin: 20px 0 18px; color: var(--ink-green); font-family: var(--serif); font-size: clamp(46px, 6.8vw, 76px); font-weight: 600; line-height: 1.18; letter-spacing: -.025em; }
.page-hero p { max-width: 720px; margin: 0; color: var(--muted); font-size: 18px; }
.breadcrumb { margin-bottom: 22px; color: #87938f; font-size: 12px; }
.breadcrumb a:hover { color: var(--primary-dark); }
.detail-grid { display: grid; gap: 24px; }
.detail-card { padding: 48px; display: grid; grid-template-columns: 130px 1fr; gap: 46px; background: white; border: 1px solid var(--border); border-radius: 24px; scroll-margin-top: 120px; }
.detail-card__number { color: var(--primary); font-family: Georgia, serif; font-size: 48px; line-height: 1; }
.detail-card h2 { margin: 0 0 12px; color: var(--ink-green); font-family: var(--serif); font-size: 34px; font-weight: 600; }
.detail-card > div > p { color: var(--muted); }
.detail-facts { margin-top: 28px; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.detail-fact { padding: 18px; background: #f6faf8; border-radius: 14px; }
.detail-fact span { display: block; margin-bottom: 4px; color: #89938f; font-size: 11px; }
.detail-fact b { color: var(--ink-green); font-size: 14px; font-weight: 600; }
.detail-note { margin-top: 17px; padding-left: 14px; border-left: 2px solid var(--secondary); color: #7a8480 !important; font-size: 12px; }
.process-grid { display: grid; grid-template-columns: repeat(4, 1fr); counter-reset: process; }
.process-step { position: relative; min-height: 230px; padding: 28px 34px; border-left: 1px solid var(--border); counter-increment: process; }
.process-step:last-child { border-right: 1px solid var(--border); }
.process-step::before { content: "0" counter(process); display: block; margin-bottom: 54px; color: var(--secondary); font-family: Georgia, serif; font-size: 12px; }
.process-step h3 { margin-bottom: 10px; color: var(--ink-green); font-family: var(--serif); font-size: 23px; font-weight: 600; }
.process-step p { margin: 0; color: var(--muted); font-size: 13px; }
.values-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.value-card { min-height: 300px; padding: 30px; background: white; border: 1px solid var(--border); border-radius: 20px; }
.value-card span { color: var(--secondary); font-family: Georgia, serif; font-size: 12px; }
.value-card h3 { margin: 80px 0 13px; color: var(--ink-green); font-family: var(--serif); font-size: 25px; font-weight: 600; }
.value-card p { margin: 0; color: var(--muted); font-size: 13px; }
.join-flow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.join-step { min-height: 230px; padding: 24px; background: white; border: 1px solid var(--border); border-radius: 18px; }
.join-step span { display: inline-grid; width: 34px; height: 34px; place-content: center; color: var(--primary-dark); background: var(--secondary-light); border-radius: 50%; font-family: Georgia, serif; font-size: 11px; }
.join-step h3 { margin: 58px 0 10px; color: var(--ink-green); font-size: 17px; }
.join-step p { margin: 0; color: var(--muted); font-size: 12px; }
.contact-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.contact-card { min-height: 260px; padding: 30px; display: flex; flex-direction: column; background: white; border: 1px solid var(--border); border-radius: 20px; }
.contact-card__icon { width: 48px; height: 48px; display: grid; place-content: center; color: var(--primary); background: var(--secondary-light); border-radius: 50%; font-size: 20px; }
.contact-card h2 { margin: 38px 0 8px; color: var(--ink-green); font-family: var(--serif); font-size: 25px; font-weight: 600; }
.contact-card p, .contact-card address { margin: 0; color: var(--muted); font-size: 13px; font-style: normal; }
.contact-card a { margin-top: auto; padding-top: 25px; color: var(--primary-dark); font-weight: 600; font-size: 13px; }
.contact-note { margin-top: 26px; padding: 22px 26px; color: #68736f; background: var(--secondary-light); border-radius: 16px; font-size: 13px; }
.not-found { min-height: 72vh; display: grid; place-items: center; text-align: center; }
.not-found strong { display: block; color: var(--secondary); font-family: Georgia, serif; font-size: 100px; font-weight: 400; line-height: 1; }
.not-found h1 { margin: 16px 0 10px; color: var(--ink-green); font-family: var(--serif); font-size: 40px; font-weight: 600; }
.not-found p { color: var(--muted); }
[data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
[data-reveal].is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
[data-reveal] { opacity: 1; transform: none; }
}
@media (max-width: 1050px) {
.site-header__inner { grid-template-columns: 150px 1fr auto; gap: 18px; }
.desktop-nav > ul { gap: 17px; }
.nav-link { font-size: 13px; }
.header-cta { display: none; }
.services-layout, .faq-layout { grid-template-columns: 290px 1fr; gap: 45px; }
.support-grid { grid-template-columns: repeat(2, 1fr); }
.join-flow { grid-template-columns: repeat(3, 1fr); }
.footer-grid { grid-template-columns: 1.3fr .8fr .9fr; }
.footer-contact { grid-column: 2 / -1; }
}
@media (max-width: 820px) {
:root { --container: min(100% - 32px, 720px); }
.section-pad { padding: 82px 0; }
.top-note a { display: none; }
.top-note__inner { justify-content: center; }
.site-header__inner { height: 70px; grid-template-columns: 1fr auto; }
.brand img { width: 108px; }
.desktop-nav { display: none; }
.mobile-nav { display: block; }
.hero { min-height: auto; }
.hero__inner { padding: 78px 0 92px; }
.hero__copy { max-width: 650px; }
.hero__ambient { right: 26px; bottom: 54px; opacity: .55; }
.stats-grid { grid-template-columns: repeat(2, 1fr); padding: 20px; }
.stat { border-bottom: 1px solid var(--border); }
.stat:nth-child(2) { border-right: 0; }
.stat:nth-child(n+3) { border-bottom: 0; }
.pillars-grid { grid-template-columns: repeat(2, 1fr); }
.services-layout, .faq-layout { grid-template-columns: 1fr; }
.services-layout .section-heading, .faq-layout .section-heading { position: static; }
.story-grid { grid-template-columns: 1fr; gap: 54px; }
.story-visual { min-height: 320px; max-width: 610px; }
.cta-panel__inner { gap: 28px; padding: 0; }
.cta-panel__actions { justify-content: center; }
.footer-grid { grid-template-columns: 1.2fr 1fr 1fr; gap: 38px; }
.footer-contact { grid-column: auto; }
.detail-card { grid-template-columns: 80px 1fr; gap: 20px; padding: 34px; }
.process-grid { grid-template-columns: repeat(2, 1fr); }
.process-step:nth-child(2) { border-right: 1px solid var(--border); }
.process-step:nth-child(n+3) { border-top: 1px solid var(--border); }
.values-grid { grid-template-columns: 1fr; }
.value-card { min-height: 250px; }
.value-card h3 { margin-top: 50px; }
.contact-grid { grid-template-columns: 1fr; }
.contact-card { min-height: 220px; }
}
@media (max-width: 560px) {
:root { --container: calc(100% - 28px); }
body { font-size: 15px; }
.section-pad { padding: 68px 0; }
.section-heading { margin-bottom: 36px; }
.section-heading h2 { font-size: 35px; }
.hero__inner { padding: 62px 0 76px; }
.hero__copy h1 { font-size: 45px; }
.hero__copy > p { font-size: 16px; }
.hero__actions { display: grid; grid-template-columns: 1fr; }
.hero__ambient { display: none; }
.stats-band { margin-top: -20px; }
.stats-grid { border-radius: 18px; }
.stat { padding: 15px 12px; }
.pillars-grid, .service-grid, .support-grid { grid-template-columns: 1fr; }
.pillar { min-height: 260px; }
.pillar h3 { margin-top: 55px; }
.service-card { min-height: 400px; }
.story-visual { min-height: 260px; padding: 38px 0; }
.story-visual__quote { padding: 0; }
.story-visual__quote p { font-size: 28px; }
.cta-panel { padding: 78px 0; }
.cta-panel__inner { padding: 0; }
.cta-panel__actions { display: grid; }
.footer-grid { grid-template-columns: 1fr 1fr; }
.footer-brand { grid-column: 1 / -1; }
.footer-contact { grid-column: 1 / -1; }
.footer-bottom { flex-direction: column; }
.page-hero { padding: 68px 0 62px; }
.page-hero h1 { font-size: 48px; }
.page-hero p { font-size: 16px; }
.detail-card { grid-template-columns: 1fr; gap: 20px; padding: 26px; }
.detail-card__number { font-size: 34px; }
.detail-facts { grid-template-columns: 1fr; }
.process-grid { grid-template-columns: 1fr; }
.process-step, .process-step:nth-child(2), .process-step:last-child { border: 0; border-top: 1px solid var(--border); }
.process-step:last-child { border-bottom: 1px solid var(--border); }
.join-flow { grid-template-columns: 1fr; }
.join-step { min-height: 200px; }
}
{
"extends": "astro/tsconfigs/strict"
}
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_图层_2" data-name="图层 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 119.17 60.53">
<defs>
<style>
.cls-1 {
fill-rule: evenodd;
}
.cls-1, .cls-2, .cls-3 {
stroke-width: 0px;
}
.cls-1, .cls-3 {
fill: #333;
}
.cls-2 {
fill: #16ae9c;
}
</style>
</defs>
<g id="_图层_1-2" data-name="图层 1">
<g>
<g>
<path class="cls-1" d="m51.16,25.12c1.12-.07,1.77-.48,1.99-1.25.28-.5.55-1.16.83-1.99h-1.15c-.07.2-.14.45-.21.73-.21.56-.38.95-.52,1.15-.28.42-.62.77-1.03,1.05-.07.07-.11.11-.11.11-.14.07-.35.14-.62.2.07.07.35.07.83,0Z"/>
<path class="cls-1" d="m54.19,37.78c-.21.14-.45.32-.73.52-.21.07-.31.14-.31.21.07.07.38.07.94,0v1.89h-9.4v.73h9.4v3.65h-11.18v.73h23.51v-.73h-11.18v-3.65h9.1v-.73h-9.1v-2.31c.55-.42.93-.87,1.14-1.37.35-.42.59-1.15.85-2.4.12-.64.36-1.89.4-3.32.07-3.13.02-3.1.02-6.51.62-.55,1.42-.87,2.39-.94h2.3c1.47,0,2.19.66,2.19,1.99v10.25c.07,1.47-.52,2.13-1.77,1.99-1.32,0-2.25-.11-2.83-.31-.34-.21-.52-.32-.52-.32-.07.07.04.24.31.52.98.7,1.99,1.05,3.04,1.05,2.09.14,3.06-.81,2.92-2.84v-10.35c-.07-1.82-1.16-2.75-3.23-2.83h-2.3c-1.05,0-1.89.46-2.51,1.36v-1.36h-1.16v7.02c0,1.53-.15,3.03-.42,4.49-.28,1.67-.91,2.87-1.88,3.56Z"/>
<path class="cls-1" d="m48.55,30.36c0,1.32-.1,2.29-.3,2.93h-1.58c-.91,0-1.51-.38-1.78-1.16-.07-.07-.1-.1-.1-.1.21,1.46.87,2.16,1.98,2.09h1.05c-1.19,2.01-2.44,3.63-3.76,4.81-.2.21-.59.46-1.15.74-.28.21-.42.31-.42.31.15.07.46.07.94,0,.91-.07,1.6-.42,2.09-1.05,1.52-1.87,2.68-3.5,3.45-4.81h2.82c1.82,0,2.71-.91,2.71-2.72v-2.83h-1.14v2.93c0,1.18-.53,1.78-1.57,1.78h-2.51c.21-.64.31-1.64.31-3.03v-3.56h5.86v-.73h-13.27v.73h6.37v3.67Z"/>
<rect class="cls-3" x="43.52" y="28.57" width="1.16" height="5.65"/>
<path class="cls-1" d="m44.69,23.97c.2.77.9,1.19,2.08,1.25h.85c0-.07-.15-.14-.42-.2-.07-.07-.15-.11-.21-.11-.07-.07-.1-.11-.1-.11-.42-.28-.77-.63-1.05-1.05-.28-.55-.48-.97-.62-1.25-.07-.28-.14-.49-.21-.63h-1.26c.08.2.18.49.32.83.21.49.42.9.63,1.25Z"/>
<polygon class="cls-1" points="93.26 34.33 81.76 34.33 81.76 30.55 91.17 30.55 91.17 29.83 81.76 29.83 81.76 26.37 92.3 26.37 92.3 25.64 69.95 25.64 69.95 26.37 80.62 26.37 80.62 29.83 71.31 29.83 71.31 30.55 80.62 30.55 80.62 34.33 69.43 34.33 69.43 35.06 93.26 35.06 93.26 34.33"/>
<path class="cls-1" d="m74.55,23.24c.28.35.49.59.62.73.56.69,1.4,1.08,2.51,1.15.63,0,.94-.03.94-.1,0-.15-.17-.24-.52-.32-.63-.21-1.15-.49-1.57-.84-.07-.07-.21-.2-.41-.42-.63-.55-1.05-1.01-1.26-1.36h-1.46c.28.29.66.67,1.15,1.15Z"/>
<path class="cls-1" d="m84.68,25.12c.98,0,1.82-.34,2.52-1.04.9-.9,1.58-1.61,1.99-2.09h-1.46c-.78.9-1.38,1.53-1.79,1.87-.27.28-.66.52-1.14.73-.21.07-.35.14-.42.21-.42.07-.63.17-.63.31h.11c.2.07.47.07.82,0Z"/>
<path class="cls-1" d="m103.58,50.71c-6.06-1.08-12.99-4.04-19.66-9.09l-1.82-.1c3.19,2.97,14.39,9.42,22.72,10.38,5.27.61,10.7,1.03,10.36-1.2-1.26.27-3.85,1.39-11.6,0Z"/>
<path class="cls-1" d="m81.55,39.77h11.49v-.84h-11.28v-2.41h-1.15v2.41h-10.66v.84h10.34c-.42.69-2.02,1.91-4.79,3.66-1.82,1.12-3.35,1.91-4.61,2.4-.14.07-.33.14-.63.21-.83.14-1.25.24-1.25.31.63.07,1.21.1,1.77.1.83,0,1.84-.34,3.03-1.04,1.18-.55,2.99-1.67,5.43-3.34,1.33-1.05,2.09-1.81,2.3-2.3Z"/>
<path class="cls-1" d="m117.37,25.86c.37-.55.84-1.46,1.47-2.71h-1.15c-.71,1.18-1.22,2.05-1.57,2.62-.34.55-.83,1-1.47,1.35-.07,0-.16.04-.3.11-.42.14-.63.24-.63.32h1.15c1.12-.07,1.95-.64,2.5-1.68Z"/>
<path class="cls-1" d="m107.67,27.54h1.05c0-.07-.21-.18-.63-.32-.14-.07-.24-.11-.3-.11-.63-.42-1.09-.87-1.37-1.35-.35-.56-.87-1.43-1.57-2.62h-1.25c.68,1.25,1.21,2.16,1.55,2.71.56,1.04,1.4,1.61,2.52,1.68Z"/>
<path class="cls-1" d="m115.19,29.1h-3.43v-7.53h-1.15v7.53h-3.03c-1.55.14-2.52.84-2.94,2.09v-2.09h-1.03v17.25h1.03v-6.48h13.37v3.55c0,1.25-.97,1.85-2.92,1.78-1.32,0-2.6-.21-3.86-.63-.08,0-.21-.07-.42-.2-.14-.15-.25-.18-.33-.11,0,0,.11.1.33.31,1.11,1.05,2.64,1.57,4.58,1.57,2.65.14,3.9-.77,3.76-2.72v-10.88c.07-2.3-1.25-3.45-3.97-3.45Zm2.82,10.04h-13.37v-4.39h13.37v4.39Zm0-5.13h-13.37v-2.62c.28-.98,1.22-1.46,2.82-1.46h7.72c1.88,0,2.82.94,2.82,2.82v1.25Z"/>
<path class="cls-1" d="m98.69,31.92v14.54h1.15v-16.83h-.42c.5-1.81,1.22-4.49,2.19-8.05h-1.25c-1.46,5.58-2.32,8.78-2.6,9.61-.07.15-.14.32-.21.53-.42.97-.84,1.78-1.25,2.41-.14.14-.35.35-.63.62-.14.14-.2.21-.2.21.42-.07.7-.14.84-.21,1.17-.2,1.98-1.16,2.4-2.83Z"/>
<path class="cls-1" d="m44.8,50.69c-.11-.11-.25-.21-.4-.29-.15-.09-.3-.16-.46-.24-.16-.07-.31-.15-.47-.22-.15-.07-.29-.15-.4-.24-.13-.09-.21-.2-.29-.32-.07-.11-.1-.26-.1-.43,0-.11.02-.22.05-.33.04-.1.11-.19.18-.26.09-.08.19-.14.31-.18.11-.05.26-.07.42-.07.17,0,.33.02.46.06.12.04.24.09.33.14.1.05.17.09.24.13.07.04.11.07.14.07s.03,0,.05-.02c0,0,.02-.02.02-.04.02-.02.02-.05.02-.07v-.2s0-.05,0-.07c-.02-.02-.02-.03-.02-.04-.02-.02-.02-.03-.05-.07-.04-.02-.09-.06-.16-.1-.09-.05-.17-.09-.28-.12-.1-.03-.21-.07-.33-.08-.12-.02-.24-.03-.36-.03-.22,0-.43.02-.62.09-.19.06-.35.15-.49.26s-.24.25-.31.42c-.07.16-.11.35-.11.56s.04.4.1.55c.07.15.18.29.28.41.11.11.25.21.4.29.15.09.3.16.46.24.15.08.31.15.46.22.15.07.29.15.41.24.11.09.21.2.28.32.07.11.1.26.1.42s-.02.31-.07.43c-.07.12-.14.23-.25.32-.1.08-.21.15-.37.2-.14.05-.28.07-.46.07-.21,0-.4-.02-.55-.07-.16-.04-.28-.1-.4-.15-.11-.06-.21-.11-.28-.15-.07-.05-.12-.07-.16-.07,0,0-.03,0-.05,0,0,0-.02.02-.03.04-.02.02-.02.05-.02.07,0,.03,0,.07,0,.12,0,.07,0,.11,0,.15.02.05.04.08.07.11.03.03.1.07.17.11.09.05.19.09.3.14.12.04.26.08.4.11.16.03.33.05.5.05.26,0,.49-.04.71-.11.21-.07.4-.17.55-.3.16-.13.28-.29.37-.48.08-.19.12-.4.12-.64,0-.21-.04-.39-.11-.55-.07-.15-.16-.29-.28-.4Z"/>
<path class="cls-1" d="m51.43,47.72s-.05-.02-.08-.02c-.03,0-.07,0-.12,0-.04,0-.09,0-.11,0-.04,0-.07,0-.09.02,0,0-.02.02-.03.03-.02.02-.02.03-.02.05v3.31c0,.27-.03.51-.1.71-.07.2-.16.37-.28.5-.11.13-.26.23-.44.29-.17.07-.37.1-.59.1s-.42-.03-.6-.1c-.17-.07-.32-.17-.45-.3-.12-.14-.21-.3-.27-.51-.07-.21-.11-.46-.11-.72v-3.28s0-.03,0-.05c-.02-.02-.02-.02-.04-.03-.02,0-.05-.02-.07-.02-.05,0-.09,0-.12,0-.05,0-.09,0-.13,0-.03,0-.06,0-.07.02-.02,0-.03.02-.05.03v3.41c0,.33.04.62.12.87.11.24.23.46.39.62.17.17.37.29.59.38.24.08.49.12.77.12.31,0,.57-.04.82-.13.24-.09.45-.22.62-.4.16-.17.3-.38.4-.64.1-.27.15-.56.15-.89v-3.31s-.02-.03-.02-.05c0-.02-.02-.02-.04-.03Z"/>
<path class="cls-1" d="m58.24,47.77s-.03-.03-.06-.04c-.02,0-.04,0-.07,0h-.24s-.07,0-.1.02c-.02,0-.07.02-.09.06-.02.02-.05.06-.07.11s-.05.11-.07.17l-1.45,4.25h-.02l-1.39-4.27c-.02-.06-.04-.11-.05-.15-.02-.04-.05-.07-.09-.11-.02-.02-.07-.05-.1-.07-.04-.02-.09-.02-.15-.02h-.21s-.07.02-.12.05c-.03.04-.05.11-.05.21v5.07s.02.02.02.03c.02,0,.05.02.07.02.02,0,.05,0,.09,0s.07,0,.1,0c.02,0,.04-.02.07-.02,0,0,.02-.02.02-.03,0,0,0-.02,0-.04v-4.85h.02l1.55,4.87s.02.02.02.03c0,0,.02.02.03.02.02,0,.04.02.07.02.02,0,.04,0,.07,0,.02,0,.05,0,.07,0,.02,0,.05,0,.06-.02.02,0,.03-.02.04-.02,0,0,.02-.02.02-.03l1.66-4.87v4.85s0,.03.02.04c0,.02,0,.02.03.03.02,0,.02.02.05.02.04,0,.07,0,.11,0,.03,0,.06,0,.08,0,.02,0,.05-.02.07-.02.02,0,.02-.02.04-.03,0,0,0-.02,0-.04v-5.03c0-.06,0-.1-.02-.13,0-.03-.02-.06-.04-.08Z"/>
<path class="cls-1" d="m63.59,52.68s-.02-.02-.05-.04c-.02,0-.02,0-.04,0h-2.26v-2.13h1.91s.04,0,.07-.02c0,0,.02-.02.05-.03,0-.02.02-.04.02-.07,0-.03,0-.06,0-.1,0-.03,0-.07,0-.1,0-.02-.02-.05-.02-.07-.02-.02-.04-.02-.05-.04-.02,0-.04,0-.07,0h-1.91v-1.89h2.21s.05,0,.07-.02c0,0,.02-.02.03-.04.02-.02.02-.04.02-.07.02-.02.02-.06.02-.09,0-.04,0-.07-.02-.11,0-.02,0-.05-.02-.07,0-.02-.02-.04-.03-.05-.02,0-.04,0-.07,0h-2.48c-.06,0-.11.02-.15.05-.05.04-.07.11-.07.21v4.84c0,.1.02.16.07.2.05.05.1.07.15.07h2.53s.02,0,.04-.02c.02,0,.03-.02.05-.05,0-.02.02-.04.02-.07,0-.02,0-.06,0-.1,0-.03,0-.07,0-.1,0-.02-.02-.05-.02-.07Z"/>
<path class="cls-1" d="m66.52,47.72s-.03-.02-.07-.02c-.02,0-.07,0-.12,0s-.09,0-.11,0c-.03,0-.06,0-.09.02-.02,0-.03.02-.05.03-.02.02-.02.03-.02.05v5.21s0,.03.02.04c.02.02.02.03.04.03.02,0,.05.02.09.02.03,0,.07,0,.12,0s.1,0,.12,0c.04,0,.07-.02.07-.02.02,0,.04-.02.04-.03.02,0,.03-.02.03-.04v-5.21s-.02-.03-.03-.05c0-.02-.02-.02-.04-.03Z"/>
<path class="cls-1" d="m74.34,53.33s-.07-.05-.13-.07c-.05-.02-.12-.06-.24-.12-.1-.05-.24-.13-.4-.23s-.36-.24-.57-.42c.12-.13.22-.28.31-.44.07-.15.15-.33.2-.51.05-.19.1-.37.12-.58.02-.2.02-.41.02-.62,0-.42-.04-.79-.14-1.12-.1-.33-.24-.62-.42-.85-.19-.24-.42-.41-.71-.54-.28-.12-.61-.18-.98-.18-.41,0-.75.07-1.06.2-.28.13-.55.32-.74.56-.2.24-.35.53-.44.88-.1.34-.15.73-.15,1.14s.05.8.12,1.14c.09.33.24.62.42.86.19.24.43.42.72.54.28.13.62.2,1.01.2.31,0,.57-.04.8-.11.22-.07.41-.15.55-.24.17.16.36.3.54.42.19.12.36.23.51.31.15.08.28.15.4.19.1.05.17.07.21.07,0,0,.03,0,.03,0,.02,0,.02-.02.05-.04.02-.02.02-.05.02-.07.02-.03.02-.07.02-.12s-.02-.1-.02-.13c0-.04-.02-.07-.05-.09Zm-2.16-.82c-.23.13-.51.19-.85.19-.35,0-.63-.06-.85-.17-.24-.12-.42-.29-.55-.5-.14-.2-.24-.45-.3-.73-.05-.29-.07-.59-.07-.91,0-.3.03-.59.08-.87.07-.27.18-.52.32-.73.15-.21.33-.37.55-.5.24-.12.52-.18.85-.18s.62.06.85.17c.24.12.41.28.55.48.14.21.24.46.3.73.05.28.09.58.09.89s-.04.6-.09.88c-.07.28-.16.52-.31.73-.14.21-.33.39-.56.51Z"/>
<path class="cls-1" d="m77.33,47.72s-.04-.02-.08-.02c-.03,0-.08,0-.13,0s-.1,0-.12,0c-.02,0-.05,0-.07.02-.02,0-.04.02-.05.03-.02.02-.02.03-.02.05v5.21s0,.03.02.04c0,.02.02.03.03.03.02,0,.05.02.09.02.02,0,.07,0,.12,0s.1,0,.13,0c.04,0,.07-.02.08-.02.02,0,.03-.02.03-.03.02,0,.02-.02.02-.04v-5.21s0-.03-.02-.05c0-.02,0-.02-.03-.03Z"/>
<path class="cls-1" d="m82.36,47.81s0-.04-.02-.06c-.02-.02-.03-.03-.07-.03-.02,0-.05-.02-.09-.02h-.26s-.06.02-.1.02c-.02,0-.04.02-.07.03,0,.02-.02.03-.02.06l-1.89,5.12s-.02.07-.02.1.02.05.02.07c.02,0,.05.02.09.02.03,0,.09,0,.14,0,.06,0,.1,0,.14,0,.04,0,.07-.02.08-.02.02,0,.03-.02.05-.03,0-.02.02-.03.02-.05l.5-1.43h2.37l.51,1.43s0,.03.02.05c0,.02.02.02.03.03.02,0,.05.02.09.02.02,0,.07,0,.14,0,.05,0,.1,0,.14,0,.03,0,.06,0,.07-.02.02-.02.03-.03.03-.06s0-.07-.02-.11l-1.88-5.12Zm-1.34,3.35l.99-2.9h.02l1.03,2.9h-2.04Z"/>
<path class="cls-1" d="m90.8,48.37c-.19-.24-.42-.41-.73-.54-.27-.12-.62-.18-.99-.18-.42,0-.75.07-1.06.2-.3.13-.54.32-.75.56-.19.24-.33.53-.43.88-.11.34-.14.73-.14,1.14s.03.8.12,1.14.23.63.4.86c.19.24.42.42.72.54.28.13.62.2,1.02.2s.75-.07,1.03-.2c.32-.13.57-.32.76-.56.2-.24.35-.54.45-.9.09-.34.14-.73.14-1.16s-.04-.79-.12-1.12c-.09-.33-.23-.62-.42-.85Zm-.07,2.89c-.07.28-.16.53-.3.73-.15.21-.36.38-.58.51-.24.13-.51.19-.85.19s-.63-.06-.85-.17c-.23-.12-.42-.29-.56-.49-.14-.2-.24-.46-.28-.73-.07-.29-.09-.59-.09-.91,0-.3.04-.59.1-.87.07-.27.16-.52.3-.73.15-.21.33-.37.56-.5.24-.12.52-.18.85-.18s.61.06.85.17c.22.12.42.28.55.48.14.21.24.46.3.73.05.28.09.58.09.89s-.04.6-.09.88Z"/>
<path class="cls-1" d="m64.06,26.55c-1.01.71-2.09.97-3.66.97s-2.35,1.34-2.35,1.34c1.13-.81,2.59-.83,2.59-.83,2.7.05,3.43-1.47,3.43-1.47Z"/>
<path class="cls-1" d="m60.49,31.56c2.82.05,3.57-1.47,3.57-1.47-1.05.71-2.17.97-3.82.97s-2.43,1.34-2.43,1.34c1.16-.82,2.68-.84,2.68-.84Z"/>
</g>
<g>
<path class="cls-2" d="m12.5,16.67c1.84-1.37,3.58-2.84,5.18-4.48.14-.14.27-.16.44-.08.73.33,1.46.67,2.14,1.09,2,1.23,3.77,2.74,5.36,4.47,1.23,1.34,2.32,2.77,3.32,4.28.42.63.81,1.29,1.22,1.94.13-.16.02-.35.06-.53-.15-.74-.2-1.49-.36-2.23-.42-1.95-1.04-3.83-1.8-5.67-1.01-2.42-2.25-4.71-3.68-6.91-1.06-1.62-2.2-3.19-3.43-4.68-.97-1.18-1.96-2.34-3.04-3.42-.14-.14-.25-.3-.38-.45h-.06c-.02.11.03.21.06.31.21.71.37,1.42.39,2.16.03,1.02-.1,2.03-.33,3.03-.53,2.28-1.57,4.34-2.83,6.29-1.29,1.98-2.83,3.76-4.46,5.47-.84.88-1.75,1.68-2.64,2.51v.06c.07-.03.15-.04.22-.08,1.6-.93,3.13-1.97,4.61-3.07Z"/>
<path class="cls-2" d="m18.89,31.06h.06c.51-.78,1.04-1.54,1.52-2.34.39-.66.67-1.38.8-2.14.01-.08.03-.15.04-.23.05-.35.05-.71,0-1.06-.1-.71-.35-1.4-.6-2.08-.82-2.22-2.11-4.24-2.81-6.51-.02.2-.04.39-.06.59.04.32.08.64.13.96.22,1.46.67,2.86,1.34,4.18.48.95.75,1.96.81,3.01.08,1.51-.2,2.96-.72,4.37-.15.42-.33.83-.5,1.25Z"/>
<path class="cls-2" d="m11.18,37.83l.83-.79c-1.02-.74-1.99-1.69-2.85-2.7,0,0,0-.01,0-.01,1.1-2.4,3.25-4.77,3.26-4.77.2-.23.19-.59-.04-.8-.24-.21-.6-.19-.8.04,0,0-2.01,2.2-3.23,4.59-2.26-2.85-3.8-5.83-3.81-5.84-.16-.26-.51-.35-.78-.19-.28.16-.36.51-.2.79.02.02,4.87,7.61,7.62,9.69Z"/>
<path class="cls-2" d="m6.3,24.5c-.51,1.04-.6,2.86-.6,2.86.5-.24,1.32-.58,1.51-1.81.18-1.24-.96-2.54-.96-2.54-.15.63-.89,1.63-.89,1.63-1.18,1.4.1,2.65.1,2.65,0-1.97.84-2.79.84-2.79Z"/>
<path class="cls-2" d="m5.02,36.25c-1.95-2.32-1.75-4.11-1.75-4.11.42,1.72,2.09,3.97,2.09,3.97.37-.77,1-1.97,0-3.62-.99-1.64-3.62-2.06-3.62-2.06.43.88.55,2.81.55,2.81-.02,2.81,2.73,3.02,2.73,3.02Z"/>
<path class="cls-2" d="m1.87,36.63c-1.03-.86-1.08-1.65-1.08-1.65.32.72,1.22,1.56,1.22,1.56.1-.36.28-.93-.28-1.57-.55-.65-1.73-.63-1.73-.63.26.35.44,1.18.44,1.18.21,1.22,1.42,1.1,1.42,1.1Z"/>
<path class="cls-2" d="m8.12,31.14c-.47-2.7.51-4,.51-4-.46,1.52-.18,4.03-.18,4.03.64-.43,1.67-1.08,1.65-2.81-.02-1.73-1.87-3.26-1.87-3.26-.06.89-.85,2.44-.85,2.44-1.3,2.17.74,3.59.74,3.59Z"/>
<path class="cls-2" d="m30.22,35.54c1.41.19,2.89-1.15,2.89-1.15-.72-.15-1.9-.99-1.9-.99-1.62-1.31-3.03.19-3.03.19,2.26-.07,3.21.89,3.21.89-1.19-.56-3.28-.63-3.28-.63.29.58.69,1.5,2.12,1.68Z"/>
<path class="cls-2" d="m5.6,39.41c-2.26.03-3.2-.93-3.2-.93,1.19.58,3.28.67,3.28.67-.26-.58-.66-1.5-2.08-1.71-1.42-.21-2.91,1.11-2.91,1.11.73.17,1.89,1.01,1.89,1.01,1.62,1.34,3.03-.15,3.03-.15Z"/>
<path class="cls-2" d="m11,25.06s.58-1.56-.96-2.27c0,0-1.02-.56-1.39-1.02,0,0-.44,1.54.2,2.51.65.97,1.46.93,1.97.93,0,0-.79-1.49-1.63-2.17,0,0,1.04.35,1.8,2.02Z"/>
<path class="cls-2" d="m22.17,28.03c.44.64,1.06,1.68,2.79,1.68s3.28-1.83,3.28-1.83c-.88-.07-2.42-.88-2.42-.88-2.16-1.32-3.59.71-3.59.71,2.69-.44,3.98.56,3.98.56-1.51-.48-4.03-.23-4.03-.23Z"/>
<path class="cls-2" d="m28.3,30.48s1.48-.83,2.12-1.67c0,0-.33,1.04-1.98,1.84,0,0,1.58.56,2.24-1,0,0,.54-1.04,1-1.42,0,0-1.56-.41-2.51.26-.94.67-.9,1.48-.88,1.99Z"/>
<path class="cls-2" d="m26.1,25.15c1.98-.06,2.8.76,2.8.76-1.04-.48-2.87-.54-2.87-.54.24.5.6,1.3,1.85,1.46,1.24.16,2.51-1.01,2.51-1.01-.62-.13-1.65-.85-1.65-.85-1.42-1.15-2.65.17-2.65.17Z"/>
<path class="cls-2" d="m33.39,37.4c-.22-1.23-1.44-1.09-1.44-1.09,1.05.84,1.1,1.65,1.1,1.65-.32-.72-1.24-1.56-1.24-1.56-.09.36-.26.95.3,1.58.56.63,1.74.6,1.74.6-.26-.35-.47-1.17-.47-1.17Z"/>
<path class="cls-2" d="m25.61,41.77c.51,2.7-.46,4.01-.46,4.01.44-1.53.12-4.04.12-4.04-.62.44-1.65,1.1-1.6,2.84.05,1.73,1.92,3.23,1.92,3.23.04-.88.82-2.45.82-2.45,1.26-2.2-.8-3.59-.8-3.59Z"/>
<path class="cls-2" d="m28.22,45.66c.11,1.95-.69,2.79-.69,2.79.44-1.04.46-2.84.46-2.84-.49.25-1.28.63-1.4,1.86-.12,1.23,1.06,2.46,1.06,2.46.1-.62.8-1.65.8-1.65,1.09-1.44-.24-2.61-.24-2.61Z"/>
<path class="cls-2" d="m23.65,47.81s.86,1.49,1.72,2.15c0,0-1.06-.32-1.89-1.99,0,0-.56,1.6,1.03,2.27,0,0,1.06.54,1.44.99,0,0,.4-1.58-.27-2.54-.68-.96-1.51-.9-2.03-.88Z"/>
<path class="cls-2" d="m21.3,33.96c-.26-.18-.62-.13-.8.13-.18.25-.13.61.12.79.01,0,1.8,1.29,3.96,3.75-.02.04-.04.09-.04.13-.01.01-.02.02-.02.03-.08.14-.19.31-.32.52-.7,1.08-2.08,3.05-2.76,3.72-.22.22-.24.58-.01.81.22.22.58.23.81.01.75-.74,2.19-2.81,2.92-3.93.08-.13.17-.26.23-.35,1.28,1.56,2.62,3.49,3.76,5.78.14.28.49.39.76.25.28-.14.4-.49.26-.76-3.53-7.02-8.87-10.86-8.88-10.87Z"/>
<path class="cls-2" d="m5.45,42.47s-1.51.83-2.18,1.69c0,0,.34-1.06,2.03-1.86,0,0-1.59-.58-2.29.99,0,0-.56,1.05-1.02,1.43,0,0,1.57.43,2.55-.24.96-.67.92-1.49.92-2.02Z"/>
<path class="cls-2" d="m28.8,36.74c2,2.3,1.81,4.09,1.81,4.09-.43-1.71-2.15-3.94-2.15-3.94-.34.79-.96,1.99.06,3.63,1.02,1.63,3.64,2.01,3.64,2.01-.44-.88-.58-2.8-.58-2.8-.02-2.82-2.78-2.99-2.78-2.99Z"/>
<path class="cls-2" d="m21.35,47.65c.12,2.34-.85,3.34-.85,3.34.54-1.24.56-3.41.56-3.41-.58.31-1.52.74-1.68,2.22-.16,1.47,1.26,2.97,1.26,2.97.14-.75.96-1.98.96-1.98,1.33-1.72-.26-3.13-.26-3.13Z"/>
<path class="cls-2" d="m7.64,47.75c-1.96.08-2.78-.74-2.78-.74,1.04.47,2.85.51,2.85.51-.26-.49-.62-1.29-1.84-1.43-1.23-.15-2.47,1.02-2.47,1.02.62.13,1.63.83,1.63.83,1.42,1.12,2.62-.19,2.62-.19Z"/>
<path class="cls-2" d="m15.06,45.16c.15-.27.06-.62-.21-.78-4.21-2.36-8.25-7.4-8.25-7.42-.2-.24-.56-.28-.8-.08-.24.19-.28.56-.08.81,0,0,.7.88,1.82,2.07l-.08.02c-.92.29-3.06.96-5.63,1.04-.32,0-.56.27-.56.58.01.31.28.56.58.55,2.74-.09,4.96-.79,5.94-1.08.03-.01.42-.12.62-.19,1.4,1.42,3.24,3.08,5.15,4.28-1.22.97-3.91,3.02-5.62,3.69-.28.11-.42.44-.31.74.12.29.45.44.74.32,2.3-.91,6.14-4.04,6.51-4.35.08-.05.12-.11.17-.19Z"/>
<path class="cls-2" d="m11.59,44.86c-.42-.63-1.06-1.67-2.79-1.65-1.74.02-3.26,1.87-3.26,1.87.88.06,2.42.86,2.42.86,2.17,1.3,3.59-.74,3.59-.74-2.69.46-3.98-.52-3.98-.52,1.52.47,4.03.19,4.03.19Z"/>
<path class="cls-2" d="m25.44,32.18c-1.73-1.68-3.55-3.04-3.57-3.05-.24-.19-.6-.14-.8.11-.19.25-.12.6.12.8.01,0,4.51,3.36,5.89,5.88.15.27.5.37.78.22.28-.15.37-.49.22-.77-.4-.74-1.04-1.53-1.76-2.29.99-.24,3.77-.86,5.47-.86.31,0,.56-.26.56-.57s-.26-.58-.56-.58c-2.22,0-6.09.99-6.1.99-.1.02-.17.07-.25.13Z"/>
<path class="cls-2" d="m12.54,50.14c1.7-.42,3.89-2.1,3.89-2.1-.76-.35-1.94-.96-3.55.03-1.62.99-2.01,3.59-2.01,3.59.85-.44,2.76-.57,2.76-.57,2.76,0,2.94-2.71,2.94-2.71-2.26,1.95-4.03,1.76-4.03,1.76Z"/>
<path class="cls-2" d="m20.79,42.01c.31-1.1.35-2.25.25-3.37-.13-1.49-.68-2.86-1.53-4.09-.47-.69-1.03-1.32-1.5-2.01-.72-1.05-1.45-2.1-2.08-3.21-.46-.81-.82-1.68-1.11-2.57-.37-1.1-.43-2.24.02-3.35.2-.51.47-.98.69-1.49.71-1.69.94-3.45.66-5.27h-.06c-.28,1.53-.87,2.94-1.61,4.31-.54,1-1.11,2-1.29,3.15-.03.16-.07.32-.09.48-.03.33-.03.67,0,1,.05.46.18.91.29,1.36.26,1.02.67,1.98,1.18,2.88.39.68.86,1.32,1.29,1.98.82,1.25,1.65,2.48,2.44,3.74.85,1.35,1.44,2.79,1.24,4.44-.1.76-.22,1.52-.42,2.26-.28,1.05-.65,2.08-.97,3.12-.51,1.64-.77,3.34-.88,5.05-.09,1.36-.06,2.72-.07,4.08,0,.35.03.7.06,1.05.09.94.17,1.88.29,2.81.09.72.23,1.44.35,2.16h.06c.04-1.67.07-3.34.13-5.01.03-.81.09-1.62.18-2.42.15-1.19.33-2.37.51-3.55.28-1.73.7-3.43,1.22-5.11.25-.81.51-1.62.74-2.43Z"/>
<path class="cls-2" d="m16.99,44.74c-.25-.86-.67-1.6-1.49-2.05-.59-.32-1.17-.67-1.74-1.03-.41-.26-.79-.55-.95-1.03-.22-.66.08-1.19.48-1.67.53-.65,1.09-1.28,1.65-1.9.62-.68,1.02-1.46.88-2.4-.08-.56-.3-1.11-.46-1.66h-.06c-.02.67-.1,1.32-.34,1.95-.51,1.33-1.48,2.29-2.49,3.23-.54.5-1.27.91-1.39,1.7-.04.25-.05.51,0,.76.11.54.5.96.95,1.31.61.46,1.32.7,2.01,1,.86.37,1.55.96,2.07,1.74.66.98.88,2.09.95,3.25.1,0,.19.04.18-.15-.02-.66,0-1.31,0-1.97-.08-.36-.13-.73-.24-1.09Z"/>
<path class="cls-2" d="m17.29,23.88c.41-.09.97.43,1.31,1.33,0-.24-.02-.63-.17-1.07-.13-.39-.43-1.31-1.15-1.49-.47-.11-.89.15-.93.17-.89.57-.8,2.18-.62,2.99.3,1.38,1.25,2.22,1.66,2.54-.3-.66-.48-1.24-.59-1.67-.32-1.23-.2-1.72-.14-1.9.06-.21.25-.82.63-.9Z"/>
</g>
</g>
</g>
</svg>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment