[{"data":1,"prerenderedAt":36},["ShallowReactive",2],{"page:home":3},{"body":4,"footer":5,"image":6,"schema":7,"css":35},"\u003Csection class=\"hero\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"hero-content\">\u003Cdiv class=\"hero-text\">\u003Cdiv class=\"eyebrow\">未形 WESHAPE · 软件定制开发与项目外包\u003C\u002Fdiv>\u003Ch1>软件定制与企业系统开发\u003Cbr>\u003Cspan>App、小程序与 AI 智能体\u003C\u002Fspan>\u003C\u002Fh1>\u003Cp class=\"hero-lead\">定制开发企业管理系统、App、微信小程序、\u003Cbr class=\"desktop-br\">数据平台与 AI 智能体，让业务流程在自己的软件中运行。\u003C\u002Fp>\u003Cp class=\"hero-explain\">作为专注企业业务的软件公司，我们负责需求分析、设计开发、测试与部署。\u003Cbr class=\"desktop-br\">您确认业务规则和阶段成果，我们按约定完成开发、上线与资料交接。\u003C\u002Fp>\u003Cdiv class=\"hero-actions\">\u003Ca href=\"#contact\" class=\"btn\">沟通我的开发需求 \u003Cspan>↗\u003C\u002Fspan>\u003C\u002Fa>\u003Ca href=\"#capabilities\" class=\"btn secondary\">查看能开发的软件 \u003Cspan>↓\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cfigure class=\"technology-hero\">\u003Cimg src=\"\u002Fmedia\u002Fsoftware-system-v10-1fb0da8b69-1254.webp\" alt=\"网页、移动端、服务与数据库连接的软件系统科技插画\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fsoftware-system-v10-1fb0da8b69-1254.webp 1254w\" width=\"1254\" height=\"1254\" loading=\"eager\" sizes=\"(max-width: 700px) 240px, 420px\" fetchpriority=\"high\">\u003Cfigcaption>\u003Cspan>系统\u003C\u002Fspan>\u003Ci>—\u003C\u002Fi>\u003Cspan>业务服务\u003C\u002Fspan>\u003Ci>—\u003C\u002Fi>\u003Cspan>数据与接口\u003C\u002Fspan>\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003C\u002Fdiv>\u003Cdiv class=\"hero-work\">\u003Cdiv>\u003Cspan>01\u003C\u002Fspan>\u003Cb>需求与方案\u003C\u002Fb>\u003Csmall>明确做什么、给谁用\u003C\u002Fsmall>\u003C\u002Fdiv>\u003Ci>→\u003C\u002Fi>\u003Cdiv>\u003Cspan>02\u003C\u002Fspan>\u003Cb>设计与开发\u003C\u002Fb>\u003Csmall>完成界面、程序和接口\u003C\u002Fsmall>\u003C\u002Fdiv>\u003Ci>→\u003C\u002Fi>\u003Cdiv>\u003Cspan>03\u003C\u002Fspan>\u003Cb>测试与上线\u003C\u002Fb>\u003Csmall>验证业务、部署运行\u003C\u002Fsmall>\u003C\u002Fdiv>\u003Ci>→\u003C\u002Fi>\u003Cdiv>\u003Cspan>04\u003C\u002Fspan>\u003Cb>交接与维护\u003C\u002Fb>\u003Csmall>交付资料、约定后续支持\u003C\u002Fsmall>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"section \" id=\"capabilities\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"section-heading\">\u003Cdiv class=\"eyebrow\">01 \u002F 我们能做什么\u003C\u002Fdiv>\u003Ch2>从具体业务出发，选择要开发的软件\u003C\u002Fh2>\u003Cp>支持整套项目开发，也可按明确范围承接功能模块、接口对接和旧系统改造。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"service-grid\">\u003Carticle class=\"service\">\u003Cdiv class=\"service-title\">\u003Cdiv class=\"icon\">\u003Cimg src=\"\u002Fart\u002Ficon-system.svg\" alt=\"\" width=\"24\" height=\"24\" decoding=\"async\">\u003C\u002Fdiv>\u003Cspan>01\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ch3>企业管理系统\u003C\u002Fh3>\u003Cp class=\"service-summary\">把客户、项目、采购和审批放进一套系统。\u003C\u002Fp>\u003Cfigure class=\"service-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fsoftware-system-v10-1fb0da8b69-1254.webp\" alt=\"管理系统的用户入口、业务服务与数据连接\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fsoftware-system-v10-1fb0da8b69-1254.webp 1254w\" width=\"1254\" height=\"1254\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>管理系统的用户入口、业务服务与数据连接\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdl>\u003Cdiv>\u003Cdt>客户与销售\u003C\u002Fdt>\u003Cdd>客户档案、跟进记录、合同与回款信息\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>项目与任务\u003C\u002Fdt>\u003Cdd>项目计划、任务分配、进度和资料归档\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>采购与库存\u003C\u002Fdt>\u003Cdd>采购申请、入出库、库存查询与提醒\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>审批与权限\u003C\u002Fdt>\u003Cdd>按岗位审批，控制数据查看和操作范围\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003Cdiv class=\"service-output\">\u003Cspan>可交付\u003C\u002Fspan>\u003Cp>员工工作台 + 管理后台 + 业务数据库\u003C\u002Fp>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002Fenterprise-systems\u002F\" class=\"text-link\">了解功能与开发范围 ↗\u003C\u002Fa>\u003C\u002Farticle>\u003Carticle class=\"service\">\u003Cdiv class=\"service-title\">\u003Cdiv class=\"icon\">\u003Cimg src=\"\u002Fart\u002Ficon-phone.svg\" alt=\"\" width=\"24\" height=\"24\" decoding=\"async\">\u003C\u002Fdiv>\u003Cspan>02\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ch3>App 与小程序\u003C\u002Fh3>\u003Cp class=\"service-summary\">让用户在手机上购买商品、预约服务或学习课程。\u003C\u002Fp>\u003Cfigure class=\"service-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fmobile-products-v11-ca0222d029-1536.webp\" alt=\"移动应用的商城、预约与学习功能\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fmobile-products-v11-ca0222d029-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>移动应用的商城、预约与学习功能\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdl>\u003Cdiv>\u003Cdt>商城交易\u003C\u002Fdt>\u003Cdd>商品、购物车、订单、支付与售后\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>预约服务\u003C\u002Fdt>\u003Cdd>选择项目与时段、派单、接单和完工\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>会员运营\u003C\u002Fdt>\u003Cdd>用户资料、会员权益、消息与活动\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>在线学习\u003C\u002Fdt>\u003Cdd>课程、直播 \u002F 回放、进度与作业\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003Cdiv class=\"service-output\">\u003Cspan>可交付\u003C\u002Fspan>\u003Cp>用户端 + 运营后台；按需配套服务人员端\u003C\u002Fp>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002Fapp-development\u002F\" class=\"text-link\">了解功能与开发范围 ↗\u003C\u002Fa>\u003C\u002Farticle>\u003Carticle class=\"service\">\u003Cdiv class=\"service-title\">\u003Cdiv class=\"icon\">\u003Cimg src=\"\u002Fart\u002Ficon-database.svg\" alt=\"\" width=\"24\" height=\"24\" decoding=\"async\">\u003C\u002Fdiv>\u003Cspan>03\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ch3>数据采集系统\u003C\u002Fh3>\u003Cp class=\"service-summary\">按约定来源和周期，把需要的数据整理出来。\u003C\u002Fp>\u003Cfigure class=\"service-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fdata-pipeline-v11-f2a9b88544-1536.webp\" alt=\"多来源数据经过校验与处理形成可用数据\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fdata-pipeline-v11-f2a9b88544-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>多来源数据经过校验与处理形成可用数据\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdl>\u003Cdiv>\u003Cdt>任务配置\u003C\u002Fdt>\u003Cdd>配置数据来源、字段和执行时间\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>自动更新\u003C\u002Fdt>\u003Cdd>获取商品或业务数据，更新变化内容\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>数据处理\u003C\u002Fdt>\u003Cdd>字段校验、格式转换、重复记录处理\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>查询与导出\u003C\u002Fdt>\u003Cdd>结果查询、文件导出、接口或数据库交付\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003Cdiv class=\"service-output\">\u003Cspan>可交付\u003C\u002Fspan>\u003Cp>任务管理后台 + 采集程序 + 数据输出接口\u003C\u002Fp>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002Fdata-crawling\u002F\" class=\"text-link\">了解功能与开发范围 ↗\u003C\u002Fa>\u003C\u002Farticle>\u003Carticle class=\"service\">\u003Cdiv class=\"service-title\">\u003Cdiv class=\"icon\">\u003Cimg src=\"\u002Fart\u002Ficon-chart.svg\" alt=\"\" width=\"24\" height=\"24\" decoding=\"async\">\u003C\u002Fdiv>\u003Cspan>04\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ch3>BI 报表与数据看板\u003C\u002Fh3>\u003Cp class=\"service-summary\">把订单、销售和库存数据变成可查询的经营报表。\u003C\u002Fp>\u003Cfigure class=\"service-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fbusiness-intelligence-v11-b7d1280abf-1536.webp\" alt=\"经营数据汇总、分析与明细查看\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fbusiness-intelligence-v11-b7d1280abf-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>经营数据汇总、分析与明细查看\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdl>\u003Cdiv>\u003Cdt>数据接入\u003C\u002Fdt>\u003Cdd>连接业务系统、数据库和现有表格\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>指标计算\u003C\u002Fdt>\u003Cdd>明确销售额、退款、毛利等统计口径\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>经营分析\u003C\u002Fdt>\u003Cdd>按门店、日期、商品或项目筛选对比\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>明细与权限\u003C\u002Fdt>\u003Cdd>从统计查看明细，按岗位限制数据范围\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003Cdiv class=\"service-output\">\u003Cspan>可交付\u003C\u002Fspan>\u003Cp>数据处理任务 + 指标规则 + 报表 \u002F 看板\u003C\u002Fp>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002Fdata-analytics\u002F\" class=\"text-link\">了解功能与开发范围 ↗\u003C\u002Fa>\u003C\u002Farticle>\u003Carticle class=\"service\">\u003Cdiv class=\"service-title\">\u003Cdiv class=\"icon\">\u003Cimg src=\"\u002Fart\u002Ficon-agent.svg\" alt=\"\" width=\"24\" height=\"24\" decoding=\"async\">\u003C\u002Fdiv>\u003Cspan>05\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ch3>AI 应用与业务智能体\u003C\u002Fh3>\u003Cp class=\"service-summary\">让 AI 使用企业资料，并连接实际工作流程。\u003C\u002Fp>\u003Cfigure class=\"service-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fai-orchestration-v10-bff58188f0-1536.webp\" alt=\"企业知识、AI 处理、业务工具和人工确认\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fai-orchestration-v10-bff58188f0-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>企业知识、AI 处理、业务工具和人工确认\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdl>\u003Cdiv>\u003Cdt>企业知识库\u003C\u002Fdt>\u003Cdd>接入文档，回答问题并展示资料来源\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>文档处理\u003C\u002Fdt>\u003Cdd>摘要、信息提取、分类和内容草拟\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>客服与工单\u003C\u002Fdt>\u003Cdd>辅助答复、整理问题、分流与人工接管\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>业务系统协作\u003C\u002Fdt>\u003Cdd>授权查询订单或客户，确认后执行操作\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003Cdiv class=\"service-output\">\u003Cspan>可交付\u003C\u002Fspan>\u003Cp>工作界面 + 知识库 + 模型 \u002F 业务接口 + 记录\u003C\u002Fp>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002Fai-agent\u002F\" class=\"text-link\">了解功能与开发范围 ↗\u003C\u002Fa>\u003C\u002Farticle>\u003Carticle class=\"service\">\u003Cdiv class=\"service-title\">\u003Cdiv class=\"icon\">\u003Cimg src=\"\u002Fart\u002Ficon-network.svg\" alt=\"\" width=\"24\" height=\"24\" decoding=\"async\">\u003C\u002Fdiv>\u003Cspan>06\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ch3>定制工具与系统集成\u003C\u002Fh3>\u003Cp class=\"service-summary\">把重复操作做成工具，让已有系统交换数据。\u003C\u002Fp>\u003Cfigure class=\"service-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fsystem-integration-v11-1f8c4f9382-1536.webp\" alt=\"现有系统通过接口与同步服务连接\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fsystem-integration-v11-1f8c4f9382-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>现有系统通过接口与同步服务连接\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdl>\u003Cdiv>\u003Cdt>内部与桌面工具\u003C\u002Fdt>\u003Cdd>批量录入、文件校验、转换和导出\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>业务自动化\u003C\u002Fdt>\u003Cdd>按规则执行重复任务，记录处理结果\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>系统接口对接\u003C\u002Fdt>\u003Cdd>连接 CRM、ERP、支付或第三方服务\u003C\u002Fdd>\u003C\u002Fdiv>\u003Cdiv>\u003Cdt>数据同步与迁移\u003C\u002Fdt>\u003Cdd>字段映射、重复处理、失败重试和核对\u003C\u002Fdd>\u003C\u002Fdiv>\u003C\u002Fdl>\u003Cdiv class=\"service-output\">\u003Cspan>可交付\u003C\u002Fspan>\u003Cp>工具程序 \u002F 接口服务 + 配置 + 运行文档\u003C\u002Fp>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002Fapi-integration\u002F\" class=\"text-link\">了解功能与开发范围 ↗\u003C\u002Fa>\u003C\u002Farticle>\u003C\u002Fdiv>\u003Cdiv class=\"service-bottom\">\u003Cdiv>\u003Cb>部署运维也是服务的一部分\u003C\u002Fb>\u003Cspan>环境配置、版本发布、日志告警、备份恢复与后续维护，按项目约定提供。\u003C\u002Fspan>\u003C\u002Fdiv>\u003Ca href=\"\u002Fservices\u002F\" class=\"text-link\">查看完整开发服务 ↗\u003C\u002Fa>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"section shade\" id=\"implementation\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"section-heading\">\u003Cdiv class=\"eyebrow\">02 \u002F 我们怎么开发\u003C\u002Fdiv>\u003Ch2>从使用界面，到后台、数据和接口，一起设计\u003C\u002Fh2>\u003Cp>先梳理谁使用、输入什么、按什么规则处理、结果存到哪里，再确定程序和系统之间怎样连接。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"architecture\">\u003Cdiv class=\"architecture-top\">\u003Cspan>根据业务范围组合开发\u003C\u002Fspan>\u003Cb>用户使用 → 后端处理 → 数据保存 → 管理与跟进\u003C\u002Fb>\u003C\u002Fdiv>\u003Cdiv class=\"architecture-visual\">\u003Cdiv>\u003Cspan class=\"visual-kicker\">SYSTEM CONNECTION\u003C\u002Fspan>\u003Ch3>界面、业务、数据\u003Cbr>通过接口协同运行\u003C\u002Fh3>\u003Cp>把使用入口与业务处理分开设计，明确每个模块负责的工作，再连接已有系统。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cimg src=\"\u002Fmedia\u002Fsystem-integration-v11-1f8c4f9382-1536.webp\" alt=\"用户界面、服务和数据通过接口连接\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fsystem-integration-v11-1f8c4f9382-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003C\u002Fdiv>\u003Cdiv class=\"system-parts rich-system-parts\">\u003Carticle>\u003Cdiv class=\"diagram-home-image\">\u003Cimg src=\"\u002Fmedia\u002Fmobile-products-v11-ca0222d029-1536.webp\" alt=\"网页 \u002F App \u002F 小程序的系统组成示意\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fmobile-products-v11-ca0222d029-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003C\u002Fdiv>\u003Cspan>使用入口\u003C\u002Fspan>\u003Ch3>网页 \u002F App \u002F 小程序\u003C\u002Fh3>\u003Cp>员工处理任务，用户提交订单或预约；页面展示当前业务状态。\u003C\u002Fp>\u003Csmall>界面、表单、交互与状态提示\u003C\u002Fsmall>\u003Cp class=\"diagram-home-example\">\u003Cb>以采购申请为例\u003C\u002Fb>用户提交采购申请，先校验必填信息，再显示提交状态。\u003C\u002Fp>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"diagram-home-image\">\u003Cimg src=\"\u002Fmedia\u002Fsystem-integration-v11-1f8c4f9382-1536.webp\" alt=\"后端与业务接口的系统组成示意\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fsystem-integration-v11-1f8c4f9382-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003C\u002Fdiv>\u003Cspan>处理规则\u003C\u002Fspan>\u003Ch3>后端与业务接口\u003C\u002Fh3>\u003Cp>判断权限、校验库存、分配人员、执行审批，按规则推进业务。\u003C\u002Fp>\u003Csmall>功能逻辑、状态流转与异常处理\u003C\u002Fsmall>\u003Cp class=\"diagram-home-example\">\u003Cb>以采购申请为例\u003C\u002Fb>后端校验岗位和申请条件，按金额选择审批路径。\u003C\u002Fp>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"diagram-home-image\">\u003Cimg src=\"\u002Fmedia\u002Fdata-pipeline-v11-f2a9b88544-1536.webp\" alt=\"数据库与文件服务的系统组成示意\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fdata-pipeline-v11-f2a9b88544-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003C\u002Fdiv>\u003Cspan>保存记录\u003C\u002Fspan>\u003Ch3>数据库与文件服务\u003C\u002Fh3>\u003Cp>保存客户、订单、任务、资料和操作记录，支持查询与备份。\u003C\u002Fp>\u003Csmall>数据结构、存储与访问权限\u003C\u002Fsmall>\u003Cp class=\"diagram-home-example\">\u003Cb>以采购申请为例\u003C\u002Fb>保存申请编号、附件和状态变化，供各端按权限查询。\u003C\u002Fp>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"diagram-home-image\">\u003Cimg src=\"\u002Fmedia\u002Fbusiness-intelligence-v11-b7d1280abf-1536.webp\" alt=\"运营 \u002F 管理后台的系统组成示意\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fbusiness-intelligence-v11-b7d1280abf-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003C\u002Fdiv>\u003Cspan>日常管理\u003C\u002Fspan>\u003Ch3>运营 \u002F 管理后台\u003C\u002Fh3>\u003Cp>维护商品、人员和规则，查看数据，处理异常与后续业务。\u003C\u002Fp>\u003Csmall>内容管理、人员权限与经营报表\u003C\u002Fsmall>\u003Cp class=\"diagram-home-example\">\u003Cb>以采购申请为例\u003C\u002Fb>负责人处理待办，业务人员查看进度和异常原因。\u003C\u002Fp>\u003C\u002Farticle>\u003C\u002Fdiv>\u003Cdiv class=\"external\">\u003Cb>已有系统可以继续连接\u003C\u002Fb>\u003Cspan>CRM \u002F ERP\u003C\u002Fspan>\u003Cspan>支付与物流\u003C\u002Fspan>\u003Cspan>地图与消息\u003C\u002Fspan>\u003Cspan>企业文档与 AI 模型\u003C\u002Fspan>\u003Cp>开发前确认接口、账号权限和数据来源，再决定复用哪些系统、开发哪些部分。\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"section \" id=\"ai\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"section-heading\">\u003Cdiv class=\"eyebrow\">03 \u002F AI 怎么用于实际工作\u003C\u002Fdiv>\u003Ch2>开发能用企业资料、能与业务系统协作的 AI\u003C\u002Fh2>\u003Cp>根据任务选择模型、整理知识、连接接口，并用业务样例检查答案依据、权限与执行结果。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"ai-grid\">\u003Cdiv class=\"ai-copy\">\u003Cfigure class=\"technology-ai\">\u003Cimg src=\"\u002Fmedia\u002Fai-orchestration-v10-bff58188f0-1536.webp\" alt=\"企业资料、AI 处理、业务工具与人工确认协同的科技插画\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fai-orchestration-v10-bff58188f0-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>企业知识 → AI 处理 → 工具协作与人工确认\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Ch3>以“售后协作”为例\u003C\u002Fh3>\u003Cp>客服需要查服务规则、核对订单、整理处理请求。我们可以把资料检索与业务接口连接起来，让这些步骤在一个工作入口完成。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cb>资料从哪里来\u003C\u002Fb>\u003Cspan>产品手册、服务规则与经过确认的企业文档。\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cb>能操作哪些系统\u003C\u002Fb>\u003Cspan>按授权范围连接订单、CRM 或工单接口。\u003C\u002Fspan>\u003C\u002Fli>\u003Cli>\u003Cb>什么必须由人员决定\u003C\u002Fb>\u003Cspan>退款、订单变更等操作，设置人工确认节点。\u003C\u002Fspan>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fdiv>\u003Cdiv class=\"ai-flow\">\u003Cdiv class=\"flow-label\">可开发的业务流程示意\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>01\u003C\u002Fspan>\u003Cp>\u003Cb>查资料\u003C\u002Fb>\u003Csmall>检索售后规则，保留引用来源。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>02\u003C\u002Fspan>\u003Cp>\u003Cb>查订单\u003C\u002Fb>\u003Csmall>调用授权接口，读取订单状态。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>03\u003C\u002Fspan>\u003Cp>\u003Cb>生成处理草稿\u003C\u002Fb>\u003Csmall>整理问题、答复依据和建议处理步骤。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"approval\">\u003Cspan>04\u003C\u002Fspan>\u003Cp>\u003Cb>人工确认后执行\u003C\u002Fb>\u003Csmall>有权限的人员审核，再提交相应业务操作。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>05\u003C\u002Fspan>\u003Cp>\u003Cb>保存记录，异常转交\u003C\u002Fb>\u003Csmall>保留调用结果；资料不足或执行失败时交给人员处理。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv class=\"ai-bottom\">\u003Cspan>可从知识问答、文档处理或一个业务任务开始，按实际需要扩展功能与接口。\u003C\u002Fspan>\u003Ca href=\"\u002Fservices\u002Fai-agent\u002F\" class=\"text-link\">了解 AI 智能体开发 ↗\u003C\u002Fa>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"section shade\" id=\"process\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"section-heading\">\u003Cdiv class=\"eyebrow\">04 \u002F 项目怎么推进\u003C\u002Fdiv>\u003Ch2>分阶段开发，每一步都有能确认的成果\u003C\u002Fh2>\u003Cp>由需求确定范围，再安排报价、排期与里程碑；开发过程中通过版本演示确认进度。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cfigure class=\"process-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp\" alt=\"软件开发六个阶段：需求分析、原型设计、程序开发、测试验收、上线交接和维护迭代\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp 2172w\" width=\"2172\" height=\"724\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003Cfigcaption>\u003Cspan>需求分析\u003C\u002Fspan>\u003Cspan>原型设计\u003C\u002Fspan>\u003Cspan>程序开发\u003C\u002Fspan>\u003Cspan>测试验收\u003C\u002Fspan>\u003Cspan>上线交接\u003C\u002Fspan>\u003Cspan>维护迭代\u003C\u002Fspan>\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003Cdiv class=\"process-grid\">\u003Carticle>\u003Cdiv class=\"step-no\">01\u003C\u002Fdiv>\u003Ch3>需求分析\u003C\u002Fh3>\u003Cdiv class=\"step-illustration\" role=\"img\" aria-label=\"需求清单：梳理角色、业务规则与功能范围\" style=\"--stage: 0; background-image: url(&quot;\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp&quot;);\">\u003C\u002Fdiv>\u003Cp>一起梳理用户角色、业务流程、必须做的功能和现有系统。\u003C\u002Fp>\u003Cdiv class=\"step-result\">\u003Cspan>这一阶段的成果\u003C\u002Fspan>\u003Cb>功能清单、流程图与范围说明\u003C\u002Fb>\u003C\u002Fdiv>\u003Csmall>您确认：业务规则与首期范围\u003C\u002Fsmall>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"step-no\">02\u003C\u002Fdiv>\u003Ch3>原型与界面设计\u003C\u002Fh3>\u003Cdiv class=\"step-illustration\" role=\"img\" aria-label=\"界面原型：设计页面结构与操作流程\" style=\"--stage: 1; background-image: url(&quot;\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp&quot;);\">\u003C\u002Fdiv>\u003Cp>设计主要页面、操作路径和页面状态，提前检查使用流程。\u003C\u002Fp>\u003Cdiv class=\"step-result\">\u003Cspan>这一阶段的成果\u003C\u002Fspan>\u003Cb>页面原型、界面设计与交互说明\u003C\u002Fb>\u003C\u002Fdiv>\u003Csmall>您确认：页面和操作方式\u003C\u002Fsmall>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"step-no\">03\u003C\u002Fdiv>\u003Ch3>前后端与接口开发\u003C\u002Fh3>\u003Cdiv class=\"step-illustration\" role=\"img\" aria-label=\"程序模块：开发前后端功能与业务接口\" style=\"--stage: 2; background-image: url(&quot;\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp&quot;);\">\u003C\u002Fdiv>\u003Cp>开发用户端、管理后台、数据库和业务接口，分阶段演示。\u003C\u002Fp>\u003Cdiv class=\"step-result\">\u003Cspan>这一阶段的成果\u003C\u002Fspan>\u003Cb>可运行的阶段版本与演示记录\u003C\u002Fb>\u003C\u002Fdiv>\u003Csmall>您反馈：功能是否符合业务\u003C\u002Fsmall>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"step-no\">04\u003C\u002Fdiv>\u003Ch3>测试与业务验收\u003C\u002Fh3>\u003Cdiv class=\"step-illustration\" role=\"img\" aria-label=\"验收盾牌：检查功能、权限与业务样例\" style=\"--stage: 3; background-image: url(&quot;\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp&quot;);\">\u003C\u002Fdiv>\u003Cp>检查正常操作、异常输入、角色权限、接口和主要设备。\u003C\u002Fp>\u003Cdiv class=\"step-result\">\u003Cspan>这一阶段的成果\u003C\u002Fspan>\u003Cb>测试记录、问题清单与验收版本\u003C\u002Fb>\u003C\u002Fdiv>\u003Csmall>共同核对：约定的业务样例\u003C\u002Fsmall>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"step-no\">05\u003C\u002Fdiv>\u003Ch3>部署上线与交接\u003C\u002Fh3>\u003Cdiv class=\"step-illustration\" role=\"img\" aria-label=\"云端服务器：部署系统并交接代码与文档\" style=\"--stage: 4; background-image: url(&quot;\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp&quot;);\">\u003C\u002Fdiv>\u003Cp>配置运行环境，部署程序与数据库，交接操作与运行资料。\u003C\u002Fp>\u003Cdiv class=\"step-result\">\u003Cspan>这一阶段的成果\u003C\u002Fspan>\u003Cb>上线版本、代码及约定的交付文档\u003C\u002Fb>\u003C\u002Fdiv>\u003Csmall>共同确认：部署与交付清单\u003C\u002Fsmall>\u003C\u002Farticle>\u003Carticle>\u003Cdiv class=\"step-no\">06\u003C\u002Fdiv>\u003Ch3>维护与后续迭代\u003C\u002Fh3>\u003Cdiv class=\"step-illustration\" role=\"img\" aria-label=\"迭代齿轮：处理运行问题并持续完善功能\" style=\"--stage: 5; background-image: url(&quot;\u002Fmedia\u002Fdelivery-pipeline-v14-a7a6f1ea17-2172.webp&quot;);\">\u003C\u002Fdiv>\u003Cp>按约定处理运行问题、备份和版本维护，评估后续功能。\u003C\u002Fp>\u003Cdiv class=\"step-result\">\u003Cspan>这一阶段的成果\u003C\u002Fspan>\u003Cb>维护记录与后续需求安排\u003C\u002Fb>\u003C\u002Fdiv>\u003Csmall>共同约定：支持范围与响应方式\u003C\u002Fsmall>\u003C\u002Farticle>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"section \" id=\"deliverables\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"section-heading\">\u003Cdiv class=\"eyebrow\">05 \u002F 最后交付什么\u003C\u002Fdiv>\u003Ch2>软件、代码、文档和交接，逐项列清楚\u003C\u002Fh2>\u003Cp>让业务人员能够使用，让后续技术人员能够接手运行与维护。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"delivery-layout\">\u003Cdiv class=\"delivery-copy\">\u003Cfigure class=\"handover-illustration\">\u003Cimg src=\"\u002Fmedia\u002Fsoftware-handover-v11-3606c446c3-1536.webp\" alt=\"软件程序、技术资料与账号权限的完整交接\" class=\"\" decoding=\"async\" srcset=\"\u002Fmedia\u002Fsoftware-handover-v11-3606c446c3-1536.webp 1536w\" width=\"1536\" height=\"1024\" loading=\"lazy\" sizes=\"(max-width: 700px) calc(100vw - 62px), (max-width: 1296px) calc(100vw - 146px), 1150px\">\u003C\u002Ffigure>\u003Ch3>交付的是可运行的软件，\u003Cbr>以及后续使用和维护所需的资料。\u003C\u002Fh3>\u003Cp>具体交付清单写入项目约定。程序范围、源码、部署环境、账号归属与维护边界，在启动前说明。\u003C\u002Fp>\u003Ca href=\"#contact\" class=\"text-link\">沟通你的项目交付要求 ↗\u003C\u002Fa>\u003C\u002Fdiv>\u003Cdiv class=\"delivery-list\">\u003Cdiv>\u003Cspan>✓\u003C\u002Fspan>\u003Cp>\u003Cb>可运行的软件\u003C\u002Fb>\u003Csmall>约定的用户端、管理后台、工具或接口服务。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>✓\u003C\u002Fspan>\u003Cp>\u003Cb>源代码与数据资料\u003C\u002Fb>\u003Csmall>按合同约定提供代码、数据库结构与初始化脚本。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>✓\u003C\u002Fspan>\u003Cp>\u003Cb>部署与接口文档\u003C\u002Fb>\u003Csmall>说明如何部署、如何配置，以及系统接口怎样调用。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>✓\u003C\u002Fspan>\u003Cp>\u003Cb>使用说明与交接\u003C\u002Fb>\u003Csmall>说明主要功能、账号权限和日常操作，完成使用交接。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv>\u003Cspan>✓\u003C\u002Fspan>\u003Cp>\u003Cb>测试与维护说明\u003C\u002Fb>\u003Csmall>交接验收记录、已知事项和约定的维护范围。\u003C\u002Fsmall>\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"section shade\" id=\"faq\">\u003Cdiv class=\"wrap\">\u003Cdiv class=\"section-heading\">\u003Cdiv class=\"eyebrow\">06 \u002F 开发前的常见问题\u003C\u002Fdiv>\u003Ch2>先把需求与合作范围说明白\u003C\u002Fh2>\u003Cp>无需先选技术框架，可以从你的实际工作和目标开始。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"faq-grid\">\u003Carticle>\u003Ch3>只有业务想法，没有技术方案，可以沟通吗？\u003C\u002Fh3>\u003Cp>可以。先说明使用者、现在怎样工作、希望解决什么问题。我们再协助梳理功能、流程和首期范围。\u003C\u002Fp>\u003C\u002Farticle>\u003Carticle>\u003Ch3>已有系统，只需要加功能或对接接口，可以做吗？\u003C\u002Fh3>\u003Cp>可以先评估现有代码、接口、数据和部署条件，再确认改造范围、兼容要求与联调安排。\u003C\u002Fp>\u003C\u002Farticle>\u003Carticle>\u003Ch3>开发周期和费用怎样确定？\u003C\u002Fh3>\u003Cp>结合功能数量、使用端、接口难度、设计和部署要求评估，确认范围后提供报价与阶段计划。\u003C\u002Fp>\u003C\u002Farticle>\u003Carticle>\u003Ch3>App、小程序和后台是否全部包含？\u003C\u002Fh3>\u003Cp>按项目需求列出每个端和模块。需要哪些客户端、后台和接口，在开发清单与报价中分别说明。\u003C\u002Fp>\u003C\u002Farticle>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection class=\"contact-section\" id=\"contact\">\u003Cdiv class=\"wrap contact-layout\">\u003Cdiv>\u003Cdiv class=\"eyebrow\">沟通开发需求\u003C\u002Fdiv>\u003Ch2>你想开发什么软件？\u003Cbr>现在有哪些业务需要处理？\u003C\u002Fh2>\u003Cp>可以提供业务流程、功能想法、现有系统或参考页面。\u003Cbr>我们据此沟通开发范围、实现方式和交付安排。\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv class=\"contact-card\">\u003Cspan>电话 \u002F 微信\u003C\u002Fspan>\u003Ca href=\"tel:18217068698\" class=\"phone\">18217068698\u003C\u002Fa>\u003Cp>QQ：471043511\u003C\u002Fp>\u003Ca href=\"\u002Fcontact\u002F\" class=\"btn\">查看联系与需求准备说明 ↗\u003C\u002Fa>\u003Csmall>专业开发团队 · 服务全国企业\u003C\u002Fsmall>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\n","\u003Cdiv class=\"wrap\">\u003Cdiv class=\"footer-brand\">\u003Cb>未形 WESHAPE\u003C\u002Fb>\u003Cspan>软件定制开发与项目外包\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cp>企业管理系统 · App 与小程序 · 数据采集与 BI · AI 应用与智能体 · 系统集成与部署\u003C\u002Fp>\u003Cdiv class=\"footer-bottom\">\u003Cspan>未形 WESHAPE · 软件定制开发团队\u003C\u002Fspan>\u003Cspan>www.hunanlyb.com\u003C\u002Fspan>\u003Cspan>\u003Ca href=\"https:\u002F\u002Fbeian.miit.gov.cn\u002F\" target=\"_blank\" rel=\"noopener\">湘ICP备2023014112号\u003C\u002Fa>\u003C\u002Fspan>\u003Cdiv>\u003Ca href=\"\u002Fconsulting\u002F\">技术咨询\u003C\u002Fa> · \u003Ca href=\"\u002Finsights\u002F\">技术资讯\u003C\u002Fa> · \u003Ca href=\"\u002Fprivacy\u002F\" class=\"\">隐私政策\u003C\u002Fa> · \u003Ca href=\"\u002Fsitemap\u002F\" class=\"\">网站地图\u003C\u002Fa>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>","https:\u002F\u002Fwww.hunanlyb.com\u002Fmedia\u002Fhero-compute-3efc9748c2-1254.png",{"@context":8,"@graph":9},"https:\u002F\u002Fschema.org",[10,24,29],{"@type":11,"@id":12,"name":13,"alternateName":14,"url":15,"logo":16,"telephone":17,"address":18},"Organization","https:\u002F\u002Fwww.hunanlyb.com\u002F#organization","未形 WESHAPE 专业开发团队","未形 WESHAPE","https:\u002F\u002Fwww.hunanlyb.com\u002F","https:\u002F\u002Fwww.hunanlyb.com\u002Fart\u002Fbrand-mark.svg","+86-18217068698",{"@type":19,"streetAddress":20,"addressLocality":21,"addressRegion":22,"addressCountry":23},"PostalAddress","雨花区洞井街道联圭路169号中建嘉和苑2、3号楼2-1411","长沙市","湖南省","CN",{"@type":25,"@id":26,"url":15,"name":14,"inLanguage":27,"publisher":28},"WebSite","https:\u002F\u002Fwww.hunanlyb.com\u002F#website","zh-CN",{"@id":12},{"@type":30,"@id":31,"url":15,"name":32,"description":33,"inLanguage":27,"isPartOf":34},"WebPage","https:\u002F\u002Fwww.hunanlyb.com\u002F#webpage","软件公司｜软件定制开发与项目外包｜未形 WESHAPE","未形 WESHAPE 是一支专业的软件开发团队，提供软件定制开发、企业系统、App、小程序、数据采集与分析及 AI Agent 开发，按业务需求明确报价、排期和交付范围。",{"@id":26},"*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;background:white;color:#182c43;font:15px\u002F1.8 \"Microsoft YaHei\",\"PingFang SC\",Arial,sans-serif;-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}img{display:block;max-width:100%}.wrap{width:calc(100% - 100px);max-width:1200px;margin:auto}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.5;letter-spacing:-.025em}p{color:#63758b}h2{font-size:32px}h3{font-size:22px}.topline{background:#f6f8fc;border-bottom:1px solid #edf0f5;color:#8996a8;font-size:11px}.topline>.wrap{height:31px;display:flex;align-items:center;justify-content:space-between}header{background:white;border-bottom:1px solid #e7edf4}.nav{height:86px;display:flex;align-items:center;gap:35px}.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}.brand>img{width:27px}.brand b{font-size:24px}.brand b span{font-size:17px;letter-spacing:1px;margin-left:4px}.nav>nav{display:flex;align-items:center;gap:27px;margin-left:auto;font-size:14px;font-weight:600}.nav .active{color:#2863d7}.contact-nav{background:#2863d7;color:white;padding:11px 17px;border-radius:5px;font-size:13px}.mobile-nav{display:none}.eyebrow{font-size:12px;color:#2c67d6;font-weight:600;letter-spacing:.08em}.hero{padding:48px 0 0;background:linear-gradient(115deg,#f9fbfe,#f1f6fd);border-bottom:1px solid #dfe8f3;position:relative}.hero h1{font-size:48px;line-height:1.4;margin:17px 0 20px;letter-spacing:-.035em}.hero h1 span{color:#2863d7}.hero-lead{font-size:20px;color:#334b66;line-height:1.85}.hero-explain{font-size:14px;color:#75859a;margin-top:17px;line-height:1.95}.hero-actions{display:flex;gap:13px;margin-top:26px}.btn{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;background:#2863d7;border:1px solid #2863d7;color:white;font-size:14px;font-weight:600;padding:13px 22px;border-radius:5px}.btn.secondary{background:white;border-color:#cddcef;color:#28518b}.hero-work{margin-top:38px;border-top:1px solid #dce6f2;display:flex;align-items:center;justify-content:space-between;padding:23px 0 25px}.hero-work>div{display:grid;grid-template-columns:29px 1fr;gap:3px 8px}.hero-work span{font-size:12px;color:#6190d6;grid-row:1\u002F3;padding-top:3px}.hero-work b{font-size:15px}.hero-work small{font-size:12px;color:#8693a4}.hero-work i{font-style:normal;font-size:17px;color:#9cacbf}.section{padding:60px 0}.section-heading{margin-bottom:30px}.section-heading h2{margin-top:9px}.section-heading>p{font-size:14px;margin-top:11px}.shade{background:#f6f8fb;border-top:1px solid #eaf0f6;border-bottom:1px solid #eaf0f6}.service-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.service{border:1px solid #dce5ef;border-radius:11px;padding:27px 29px;background:white}.service-title{display:flex;align-items:center;justify-content:space-between}.service-title>span{color:#b6c6dc;font-size:14px;font-weight:600}.icon{background:#f3f7ff;border:1px solid #dce7fa;border-radius:9px;width:43px;height:43px;display:grid;place-items:center}.service h3{font-size:25px;margin:15px 0 7px}.service-summary{font-size:14px;color:#526a84}.service dl{margin:22px 0 0}.service dl>div{display:grid;grid-template-columns:104px 1fr;gap:12px;border-top:1px solid #edf1f5;padding:12px 0}.service dt{font-size:13px;font-weight:600;color:#334c6b}.service dd{font-size:13px;color:#79889b;margin:0}.service-output{display:flex;gap:12px;margin:15px 0 18px;padding:13px 16px;border-radius:6px;background:#f5f8fd;align-items:flex-start}.service-output>span{font-size:11px;white-space:nowrap;color:#3566a9;margin-top:2px}.service-output p{font-size:12px;color:#5d7695}.text-link{font-size:13px;font-weight:600;color:#2863d7}.service-bottom{padding:22px 26px;margin-top:23px;border:1px solid #dce5ef;border-radius:9px;display:flex;align-items:center;justify-content:space-between;gap:25px;background:#fbfcfe}.service-bottom b{font-size:15px;display:block;margin-bottom:5px}.service-bottom span{color:#7a889c;font-size:13px}.service-bottom a{white-space:nowrap}.architecture{border:1px solid #dce5ef;border-radius:12px;padding:27px;background:white}.architecture-top{display:flex;justify-content:space-between;gap:25px;align-items:center;border-bottom:1px solid #e4ebf4;padding-bottom:21px}.architecture-top>span{font-size:12px;color:#8c9bb0}.architecture-top b{font-size:14px;color:#5277a3}.system-parts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;padding:25px 0}.system-parts article{background:#f6f9fe;border:1px solid #e3ebf6;border-radius:8px;padding:20px 18px}.system-parts article>span{color:#6d91c3;font-size:11px}.system-parts h3{font-size:17px;margin:10px 0 13px}.system-parts p{font-size:13px;line-height:1.95}.system-parts small{display:block;padding-top:15px;margin-top:17px;border-top:1px solid #dfe8f4;font-size:11px;color:#8c9caf}.external{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fbfcfe;border:1px dashed #cedaea;border-radius:8px;padding:20px 22px}.external>b{font-size:13px;margin-right:16px}.external>span{font-size:11px;color:#5c7aa1;border:1px solid #dce6f2;padding:3px 12px;border-radius:4px;background:white}.external>p{width:100%;margin-top:4px;font-size:12px;color:#8c99ab}.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:65px;align-items:start}.ai-copy h3{font-size:26px;margin-bottom:17px}.ai-copy>p{font-size:15px;line-height:2}.ai-copy ul{padding:0;margin:27px 0 0;list-style:none}.ai-copy li{padding:18px 0;border-top:1px solid #e5ebf3}.ai-copy li b{display:block;font-size:16px;margin-bottom:8px}.ai-copy li span{font-size:13px;color:#7f8da0}.ai-flow{padding:25px;border:1px solid #dce5ef;border-radius:12px;background:#fafcff}.flow-label{font-size:12px;color:#7891b2;padding-bottom:17px}.ai-flow>div:not(.flow-label){display:flex;gap:17px;background:white;border:1px solid #e3eaf4;border-radius:7px;padding:14px 17px;margin:9px 0}.ai-flow>div>span{color:#6290d4;font-size:12px;padding-top:3px}.ai-flow b{font-size:14px;color:#304e73;display:block}.ai-flow small{display:block;font-size:12px;color:#8290a3;margin-top:3px}.ai-flow .approval{background:#faf7f0!important;border-color:#e9dfca!important}.ai-flow .approval b{color:#7e6849}.ai-bottom{margin-top:28px;display:flex;justify-content:space-between;align-items:center;padding:19px 24px;border:1px solid #dce5ef;border-radius:8px;gap:25px}.ai-bottom>span{font-size:13px;color:#7c8ca1}.ai-bottom>a{white-space:nowrap}.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.process-grid>article{border:1px solid #dce5ef;background:white;border-radius:10px;padding:24px}.step-no{font-size:13px;color:#3a76d6;border-bottom:1px solid #e4ebf4;padding-bottom:13px;margin-bottom:16px}.process-grid h3{font-size:20px;margin-bottom:12px}.process-grid p{font-size:13px;min-height:72px;line-height:1.95}.step-result{background:#f5f8fd;border-radius:6px;padding:15px;margin:17px 0}.step-result span{font-size:10px;display:block;color:#8e9caf;margin-bottom:5px}.step-result b{font-size:12px;display:block;color:#3e608c}.process-grid article>small{font-size:11px;color:#8b98a9}.delivery-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:70px}.delivery-copy h3{font-size:27px;line-height:1.6;margin:4px 0 22px}.delivery-copy p{font-size:15px;line-height:2;margin-bottom:23px}.delivery-list{border:1px solid #dce5ef;border-radius:11px;padding:5px 26px}.delivery-list>div{display:flex;gap:18px;padding:20px 0;border-bottom:1px solid #e6edf5}.delivery-list>div:last-child{border:0}.delivery-list>div>span{color:#3879dc;font-size:15px}.delivery-list b{font-size:15px;display:block;color:#314b6b}.delivery-list small{font-size:12px;display:block;color:#8795a7;margin-top:5px}.faq-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 38px}.faq-grid article{padding:23px 0;border-top:1px solid #dae4f0}.faq-grid h3{font-size:17px;margin-bottom:11px}.faq-grid p{font-size:13px;line-height:1.95}.contact-section{padding:57px 0;background:#edf3fc}.contact-layout{display:grid;grid-template-columns:1.25fr 1fr;gap:75px;align-items:center}.contact-layout h2{font-size:33px;line-height:1.65;margin:11px 0 19px}.contact-layout p{font-size:14px;line-height:2}.contact-card{padding:29px;border:1px solid #d8e4f4;background:white;border-radius:12px}.contact-card>span{display:block;font-size:12px;color:#8092aa}.phone{font-size:30px;letter-spacing:.04em;font-weight:600;color:#2a65cc;display:block;margin:10px 0}.contact-card .btn{font-size:13px;margin:18px 0 16px;display:flex}.contact-card>small{font-size:10px;color:#9ca8b9}footer{padding:35px 0 22px;background:#fff;border-top:1px solid #dce6f3}.footer-brand{display:flex;gap:20px;align-items:center}.footer-brand b{font-size:20px}.footer-brand span{font-size:13px;color:#7b8ea6}footer p{font-size:12px;margin-top:14px;color:#8d9caf}.footer-bottom{display:flex;gap:30px;border-top:1px solid #e4ebf4;padding-top:19px;margin-top:27px;font-size:11px;color:#a2aec0}.footer-bottom>div{margin-left:auto}\n@media(min-width:1500px){.hero{padding-top:60px}.hero h1{font-size:52px}}\n@media(max-width:1150px){.nav{gap:20px}.nav>nav{gap:18px;font-size:12px}.brand b{font-size:22px}.brand b span{font-size:14px}.contact-nav{padding:10px 12px;font-size:12px}.system-parts{grid-template-columns:1fr 1fr}.hero h1{font-size:43px}.process-grid{grid-template-columns:1fr 1fr}.delivery-layout{gap:40px}.ai-grid{gap:40px}}\n@media(max-width:900px){.nav>nav,.contact-nav{display:none}.mobile-nav{display:block;margin-left:auto;position:relative}.mobile-nav summary{font-size:25px;color:#2863d7;cursor:pointer;list-style:none}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav>div{position:absolute;right:0;top:40px;z-index:10;background:white;border:1px solid #dbe6f5;border-radius:8px;padding:12px;width:200px;box-shadow:0 10px 25px #263c5e14}.mobile-nav a{display:block;font-size:13px;padding:8px 12px}.hero h1{font-size:38px}.hero-lead{font-size:17px}.hero-work>div{grid-template-columns:1fr;gap:2px}.hero-work span{grid-row:auto}.hero-work small{font-size:10px}.service{padding:23px}.service dl>div{grid-template-columns:1fr;gap:5px}.service dd{font-size:12px}.service-bottom{display:block}.service-bottom a{display:inline-block;margin-top:14px}.ai-grid{gap:30px}.ai-flow{padding:17px}.contact-layout{gap:35px}.contact-layout h2{font-size:28px}}\n@media(max-width:650px){.wrap{width:calc(100% - 40px)}.topline>.wrap{height:27px;font-size:9px}.topline span:last-child{display:none}.nav{height:68px}.brand>img{width:23px}.brand b{font-size:23px}.brand b span{font-size:14px}.hero{padding-top:30px}.eyebrow{font-size:10px;letter-spacing:.04em}.hero h1{font-size:29px;line-height:1.55;margin:15px 0 18px;max-width:400px}.hero-lead{font-size:16px;line-height:1.9}.desktop-br{display:none}.hero-explain{font-size:12px;line-height:1.95;margin-top:15px}.hero-actions{gap:10px;margin-top:24px;flex-wrap:wrap}.btn{font-size:12px;gap:15px;padding:11px 15px}.hero-work{display:grid;grid-template-columns:1fr 1fr;gap:19px 15px;margin-top:29px;padding:22px 0 25px}.hero-work>i{display:none}.hero-work>div{grid-template-columns:24px 1fr;gap:2px 6px}.hero-work span{grid-row:1\u002F3;font-size:11px}.hero-work b{font-size:13px}.hero-work small{font-size:10px}.section{padding:37px 0}.section-heading{margin-bottom:24px}.section-heading h2{font-size:25px;line-height:1.55}.section-heading>p{font-size:12px;line-height:1.95}.service-grid{grid-template-columns:1fr;gap:17px}.service{padding:23px}.service h3{font-size:23px}.service-summary{font-size:13px}.service dl{margin-top:20px}.service dl>div{grid-template-columns:85px 1fr;gap:10px;padding:12px 0}.service dt{font-size:12px}.service dd{font-size:12px}.service-output{padding:12px;margin:14px 0 16px}.service-output p{font-size:11px}.service-bottom{padding:19px}.service-bottom b{font-size:14px}.service-bottom span{font-size:12px;display:block;line-height:1.95}.text-link{font-size:12px}.architecture{padding:18px}.architecture-top{display:block;padding-bottom:17px}.architecture-top span{font-size:10px}.architecture-top b{display:block;font-size:12px;margin-top:9px;line-height:1.9}.system-parts{grid-template-columns:1fr;padding:19px 0;gap:14px}.system-parts article{padding:18px}.system-parts h3{font-size:18px;margin:8px 0 10px}.system-parts p{font-size:13px}.system-parts small{padding-top:11px;margin-top:12px}.external{padding:17px;gap:7px}.external>b{width:100%;font-size:12px;margin-bottom:7px}.external>span{font-size:10px;padding:3px 8px}.external>p{font-size:11px;margin-top:8px;line-height:1.95}.ai-grid{grid-template-columns:1fr;gap:22px}.ai-copy h3{font-size:23px}.ai-copy>p{font-size:14px}.ai-copy ul{margin-top:22px}.ai-copy li{padding:16px 0}.ai-copy li b{font-size:15px}.ai-copy li span{font-size:12px}.ai-flow{padding:19px}.ai-flow>div:not(.flow-label){padding:13px;gap:13px}.ai-flow small{font-size:11px}.ai-bottom{display:block;padding:18px;margin-top:22px}.ai-bottom>span{display:block;font-size:12px}.ai-bottom>a{display:inline-block;margin-top:12px}.process-grid{grid-template-columns:1fr;gap:17px}.process-grid article{padding:22px}.process-grid p{min-height:0;font-size:13px}.process-grid h3{font-size:21px}.step-result{margin:17px 0}.delivery-layout{grid-template-columns:1fr;gap:27px}.delivery-copy h3{font-size:24px}.delivery-copy p{font-size:14px}.delivery-list{padding:3px 20px}.delivery-list>div{padding:17px 0;gap:14px}.delivery-list b{font-size:14px}.delivery-list small{font-size:11px}.faq-grid{grid-template-columns:1fr;gap:0}.faq-grid article{padding:21px 0}.faq-grid h3{font-size:16px}.faq-grid p{font-size:12px}.contact-section{padding:36px 0}.contact-layout{grid-template-columns:1fr;gap:26px}.contact-layout h2{font-size:26px}.contact-layout p{font-size:13px}.contact-card{padding:23px}.phone{font-size:28px}.footer-brand{display:block}.footer-brand span{display:block;font-size:12px;margin-top:8px}footer{padding-top:28px}footer p{font-size:11px;line-height:2}.footer-bottom{display:block;font-size:10px;padding-top:17px;margin-top:23px}.footer-bottom>span{display:block;margin:5px 0}.footer-bottom>div{margin-top:12px}}\n\n.hero{background:linear-gradient(110deg,#f8fbff,white 75%);padding-top:37px}.hero-content{display:grid;grid-template-columns:1.5fr 1fr;gap:35px;align-items:center}.hero h1{font-size:39px;line-height:1.5;letter-spacing:-.04em}.hero-lead{font-size:17px}.hero-explain{font-size:13px}.hero-text .desktop-br{display:none}.hero-actions .btn{font-size:13px;padding:12px 18px;gap:22px}.technology-hero{margin:0;min-width:0}.technology-hero img{width:100%;display:block;mix-blend-mode:multiply}.technology-hero figcaption{display:flex;justify-content:center;gap:8px;color:#8597b1;font-size:10px;margin-top:5px}.technology-hero figcaption i{font-style:normal;color:#c2ccda}.hero-work{margin-top:32px}.technology-ai{margin:0 0 22px;border:1px solid #e3eaf4;border-radius:11px;overflow:hidden;background:#fcfdff}.technology-ai img{display:block;width:100%;height:235px;object-fit:contain}.technology-ai figcaption{text-align:center;font-size:11px;color:#7c91ae;border-top:1px solid #eaf0f7;padding:11px 10px}.ai-grid{align-items:center}.ai-copy h3{font-size:23px}.ai-copy ul{margin-top:19px}.ai-copy li{padding:13px 0}.ai-copy li b{font-size:15px}.ai-copy li span{font-size:12px}\n.hero-text .desktop-br{display:block}\n@media(max-width:1100px){.hero-content{grid-template-columns:1.45fr 1fr;gap:20px}.hero h1{font-size:33px}.hero-lead{font-size:15px}.technology-hero figcaption{font-size:9px;gap:5px}}\n@media(max-width:800px){.hero-content{grid-template-columns:1fr}.technology-hero{max-width:420px;margin:auto}.hero h1{font-size:38px}.hero-lead{font-size:17px}.technology-ai img{height:200px}}\n@media(max-width:650px){.hero-text .desktop-br{display:none}.hero{padding-top:29px}.hero-content{gap:18px}.hero h1{font-size:29px}.hero-lead{font-size:16px}.hero-explain{font-size:12px}.hero-actions .btn{font-size:12px;padding:11px 14px;gap:12px}.technology-hero{width:100%;max-width:315px}.technology-hero figcaption{font-size:9px;margin-top:0}.hero-work{margin-top:25px}.technology-ai img{height:205px}.technology-ai figcaption{font-size:10px}.ai-copy h3{font-size:22px}}\n\n\u002F* Restrained technology imagery: blue-silver illustrations, detailed copy stays readable. *\u002F\n.hero{background:#f3f8ff url('\u002Fart\u002Fhero-grid-v11.svg') center\u002Fcover no-repeat;border-bottom-color:#d2e2f5;position:relative}.hero-content{position:relative;z-index:1}.hero-text{position:relative}.hero-text .eyebrow{display:inline-block;padding:6px 11px;border:1px solid #d2e2f6;border-radius:4px;background:#ffffffa8;font-size:11px}.hero h1{font-size:40px}.hero-explain{color:#607997}.hero-lead{color:#314f74}.technology-hero{position:relative;padding:10px}.technology-hero img{mix-blend-mode:multiply;filter:drop-shadow(0 22px 18px #5a8abe13)}.technology-hero:before{content:'';position:absolute;inset:10% -2% 13%;border:1px solid #c1d8f2;border-radius:50%;transform:rotate(-15deg);z-index:-1}.technology-hero:after{content:'';position:absolute;width:7px;height:7px;background:#5184d2;right:9%;top:15%;border:5px solid #e9f2ff;box-sizing:content-box;border-radius:50%;box-shadow:0 0 0 1px #c5d9f4}.technology-hero figcaption{background:#ffffffb8;border:1px solid #dde9f8;border-radius:30px;padding:7px 12px;color:#6c86aa}.hero-work{background:#ffffff80;border:1px solid #d9e5f4;border-radius:10px;padding:20px 23px;margin-bottom:27px}.service-grid{gap:25px}.service{position:relative;border-color:#d8e5f6;padding:25px 28px;background:linear-gradient(145deg,#f7faff,white 38%);box-shadow:0 10px 35px #315b9710;overflow:hidden}.service:before{content:'';position:absolute;height:3px;left:28px;top:0;width:47px;background:#7fa4df;border-radius:0 0 3px 3px}.service h3{margin:12px 0 5px}.service-illustration{margin:17px -28px 14px;background:linear-gradient(120deg,#f4f8ff,#fdfefe);position:relative;border-top:1px solid #eaf0f8;border-bottom:1px solid #eaf0f8;padding:7px 16px 10px}.service-illustration img{width:100%;height:190px;object-fit:contain;mix-blend-mode:multiply}.service-illustration figcaption{text-align:center;color:#88a0bd;font-size:10px;margin-top:3px}.service dl{margin-top:12px}.service dl>div{padding:9px 0}.service-output{margin-top:14px;margin-bottom:13px}.service-bottom{background:linear-gradient(110deg,#f6f9ff,white)}#implementation{background:#f3f7fd url('\u002Fart\u002Fsection-network-v11.svg') center top\u002Fcover no-repeat}.architecture{background:#ffffffdf;border-color:#d4e3f4;box-shadow:0 15px 50px #4d77ae0a}.architecture-visual{display:grid;grid-template-columns:.8fr 1.2fr;gap:40px;align-items:center;background:linear-gradient(110deg,#f7faff,white);border-bottom:1px solid #e2eaf4;margin:0 -27px;padding:22px 45px}.architecture-visual img{width:100%;height:265px;object-fit:contain;mix-blend-mode:multiply}.visual-kicker{font-size:10px;color:#7898c4;letter-spacing:.1em}.architecture-visual h3{font-size:26px;margin:10px 0 13px;line-height:1.55}.architecture-visual p{font-size:13px;line-height:1.9;max-width:370px}.architecture-top{border-bottom:0}.system-parts article{background:#f9fbff}.technology-ai{background:linear-gradient(120deg,#f0f6ff,#fff);border-color:#d0e1f7;box-shadow:0 14px 30px #38639a0c}.technology-ai img{height:280px;mix-blend-mode:multiply}.ai-flow{background:#f4f8ff url('\u002Fart\u002Fsection-network-v11.svg') center\u002Fcover}.ai-grid{gap:50px}#process{background:#f6f9fe url('\u002Fart\u002Fsection-network-v11.svg') center\u002Fcover}.process-illustration{margin:0 0 28px;border:1px solid #dae7f8;border-radius:13px;background:#fff;overflow:hidden;box-shadow:0 15px 35px #426aa30c;position:relative}.process-illustration img{width:100%;height:330px;object-fit:contain;mix-blend-mode:multiply;background:linear-gradient(110deg,#fbfdff,#f1f6fe)}.process-illustration figcaption{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;text-align:center;border-top:1px solid #e3ecf7;padding:15px 25px;background:#fcfdff;color:#5a7daa;font-size:12px}.process-grid>article{background:#ffffffef;box-shadow:0 7px 20px #315b9707}.handover-illustration{margin:0 0 23px;border:1px solid #e1eaf6;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#f4f8ff,#fff)}.handover-illustration img{height:260px;width:100%;object-fit:contain;mix-blend-mode:multiply}.delivery-layout{align-items:center;gap:52px}.delivery-copy h3{font-size:25px}.delivery-copy p{font-size:14px}.contact-section{background:#eef5ff url('\u002Fart\u002Fhero-grid-v11.svg') right center\u002Fcover no-repeat}.contact-card{box-shadow:0 18px 40px #3b6ca115}.detail-tech-visual{margin:0 0 28px;display:grid;grid-template-columns:1.05fr 1fr;gap:35px;align-items:center;padding:20px 38px;background:linear-gradient(125deg,#f4f8ff,#fcfdff);border:1px solid #dbe7f7;border-radius:13px}.detail-tech-visual img{width:100%;height:250px;object-fit:contain;mix-blend-mode:multiply}.detail-tech-visual figcaption>span{font-size:11px;color:#7e99bd}.detail-tech-visual strong{display:block;font-size:22px;line-height:1.8;margin:11px 0 14px;color:#355575;font-weight:600}.detail-tech-visual p{font-size:12px;color:#8d9fb5;margin:0}\n.hero{overflow:clip}.hero-content{z-index:auto}.technology-hero{mix-blend-mode:multiply}.technology-hero img{filter:none}\n@media(max-width:1100px){.hero h1{font-size:33px}.architecture-visual{gap:25px;padding-left:30px;padding-right:30px}.architecture-visual h3{font-size:23px}.service-illustration img{height:180px}.detail-tech-visual strong{font-size:19px}}\n@media(max-width:800px){.hero h1{font-size:38px}.technology-hero{max-width:430px}.hero-work{gap:20px;padding:20px}.architecture-visual{grid-template-columns:1fr 1fr}.architecture-visual img{height:225px}.detail-tech-visual{gap:20px;padding:20px}.detail-tech-visual img{height:210px}}\n@media(max-width:650px){.hero{background-position:66% top;background-size:auto 1050px}.hero h1{font-size:29px}.hero-text .eyebrow{font-size:9px;padding:5px 7px}.technology-hero{max-width:315px;padding:8px}.technology-hero figcaption{font-size:9px;gap:5px;padding:6px}.hero-work{padding:17px 13px;gap:17px 10px;border-radius:8px;margin-bottom:23px}.hero-work>div{grid-template-columns:20px 1fr;gap:2px 3px}.hero-work b{font-size:12px}.hero-work small{font-size:9px}.service{padding:23px}.service-illustration{margin-left:-23px;margin-right:-23px;padding:8px 15px 11px}.service-illustration img{height:175px}.service-illustration figcaption{font-size:9px}.service dl>div{padding:10px 0}.architecture-visual{grid-template-columns:1fr;gap:15px;margin-left:-18px;margin-right:-18px;padding:23px}.architecture-visual h3{font-size:24px}.architecture-visual p{font-size:12px}.architecture-visual img{height:205px}.technology-ai img{height:220px}.ai-grid{gap:24px}.process-illustration img{height:200px}.process-illustration figcaption{gap:3px;padding:12px 9px;font-size:9px}.handover-illustration img{height:210px}.delivery-layout{gap:25px}.delivery-copy h3{font-size:23px}.detail-tech-visual{grid-template-columns:1fr;gap:13px;padding:18px}.detail-tech-visual img{height:195px}.detail-tech-visual strong{font-size:18px;margin:7px 0 10px}.detail-tech-visual p{font-size:11px}.contact-section{background-position:65% center}}\n\n\u002F* Illustrated system responsibilities and business-specific flows. *\u002F\n.rich-architecture .arch-products{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}\n.rich-architecture .arch-products:has(>article:nth-child(4)){grid-template-columns:repeat(4,minmax(0,1fr))}\n.diagram-product{min-width:0;border:1px solid #dce6f3;border-radius:10px;overflow:hidden;background:#fff}\n.diagram-product-image{padding:12px 18px;background:linear-gradient(120deg,#f4f8ff,#fff);border-bottom:1px solid #e6edf6}\n.diagram-product-image img{width:100%;height:145px;object-fit:contain;mix-blend-mode:multiply}\n.diagram-product-copy{padding:21px}\n.rich-architecture .diagram-node-number{font-size:11px;color:#7792b5;line-height:1.8;display:block}\n.diagram-product h3{font-size:19px;margin:9px 0 12px;line-height:1.6}\n.diagram-product p{font-size:13px;line-height:1.95;margin:0;color:#677b94}\n.diagram-product dl{margin:18px 0 0;border-top:1px solid #e5edf6;padding-top:12px}\n.diagram-product dl>div{display:grid;grid-template-columns:28px 1fr;gap:10px;margin:8px 0}\n.diagram-product dt,.diagram-product dd{font-size:11px;line-height:1.9;margin:0}\n.diagram-product dt{color:#3a659a}.diagram-product dd{color:#7a8ca5}\n.rich-architecture .arch-core{padding:25px;background:#f8fbff}\n.diagram-core-grid,.diagram-connections{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;text-align:left}\n.diagram-core-grid{margin-top:23px;padding-top:23px;border-top:1px solid #dfe8f5}\n.diagram-item-title{display:flex;gap:10px;align-items:center}\n.diagram-item-title img{width:24px;height:24px;flex:none}\n.diagram-item-title h4{font-size:15px;line-height:1.65;margin:0}\n.rich-architecture .diagram-core-grid p,.rich-architecture .diagram-connections p{font-size:12px;line-height:1.95;margin:11px 0 0;color:#6b7e97}\n.rich-architecture .arch-interface{display:block;padding:23px;background:#fff}\n.rich-architecture .arch-interface>span{display:block;font-size:12px;line-height:1.9;margin-top:8px}\n.diagram-connections{margin-top:23px}\n.diagram-scope-note{margin:18px 0 0;font-size:11px;color:#899bb2;line-height:1.9}\n.diagram-flow-overview{display:grid;grid-template-columns:.75fr 1.25fr;gap:32px;align-items:center;border-bottom:1px solid #e3ebf6;padding:22px 0 27px}\n.diagram-flow-overview figure{margin:0;padding:12px 16px;background:linear-gradient(135deg,#f3f7fd,#fff);border:1px solid #e5edf7;border-radius:10px;min-width:0}\n.diagram-flow-overview figure img{width:100%;height:205px;object-fit:contain;mix-blend-mode:multiply}\n.diagram-flow-overview figcaption{font-size:10px;text-align:center;color:#829ab9;line-height:1.8;padding:8px 0 2px}\n.diagram-overview-copy>span{font-size:11px;color:var(--project,#6c8fbd)}\n.diagram-overview-copy h3{font-size:23px;line-height:1.65;margin:10px 0 17px}\n.diagram-overview-copy dl{margin:0}\n.diagram-overview-copy dl>div{display:grid;grid-template-columns:60px 1fr;gap:14px;padding:9px 0;border-top:1px solid #e8eef6}\n.diagram-overview-copy dt,.diagram-overview-copy dd{font-size:12px;line-height:1.9;margin:0}\n.diagram-overview-copy dt{color:#45688f;font-weight:600}.diagram-overview-copy dd{color:#6f8097}\n.rich-flow .flow-track{margin:27px 0;gap:16px}\n.rich-flow .flow-step{padding:20px 16px;display:flex;flex-direction:column;align-items:flex-start;background:linear-gradient(145deg,var(--project-pale,#f3f7fd),#fff)}\n.diagram-step-icon{width:39px;height:39px;display:grid;place-items:center;border:1px solid #dce7f5;border-radius:9px;background:white;margin-bottom:15px}\n.diagram-step-icon img{width:23px;height:23px}\n.rich-flow .flow-step>span{font-size:11px;margin-bottom:8px}\n.rich-flow .flow-step h3{font-size:16px;line-height:1.6;margin:0 0 7px}\n.diagram-step-role{font-size:10px;color:var(--project,#567db1);margin-bottom:10px}\n.rich-flow .flow-step p{font-size:12px;line-height:1.95;margin:0 0 17px}\n.diagram-step-output{border-top:1px solid #dfe7f2;padding-top:12px;margin-top:auto;width:100%}\n.diagram-step-output span{display:block;font-size:10px;color:#8a9bb0;margin-bottom:4px}\n.diagram-step-output b{display:block;font-size:11px;color:#46678f;font-weight:500;line-height:1.85}\n.diagram-exception{display:flex;gap:15px;padding:18px 20px;margin-top:20px;background:#f5f8fc;border:1px solid #e0e8f3;border-radius:8px}\n.diagram-exception>img{height:24px;width:24px;flex:none;margin-top:2px}\n.diagram-exception h4{font-size:14px;line-height:1.7;margin:0 0 6px}\n.diagram-exception p{font-size:12px;line-height:1.95;margin:0;color:#73849b}\n.rich-system-parts .diagram-home-image{padding:8px;margin:-5px -5px 16px;background:linear-gradient(120deg,#f0f6ff,#fff);border:1px solid #e2ebf7;border-radius:6px}\n.rich-system-parts .diagram-home-image img{width:100%;height:125px;object-fit:contain;mix-blend-mode:multiply}\n.rich-system-parts article .diagram-home-example{font-size:11px;line-height:1.95;margin:15px 0 0;border-top:1px solid #e1eaf7;padding-top:12px;color:#7890ad}\n.diagram-home-example b{display:block;color:#4e749f;font-weight:500;margin-bottom:6px}\n.diagram-agent-icon{display:grid;place-items:center;width:36px;height:36px;border:1px solid #dce7f6;border-radius:8px;background:#f6f9fe;margin-bottom:12px}\n.diagram-agent-icon img{width:23px;height:23px}\n.diagram-agent-io{margin:13px 0 0;border-top:1px solid #e6edf6;padding-top:8px}\n.diagram-agent-io>div{display:grid;grid-template-columns:28px 1fr;gap:10px;margin:5px 0}\n.diagram-agent-io dt,.diagram-agent-io dd{font-size:11px;line-height:1.9;margin:0}\n.diagram-agent-io dt{color:#5076a6}.diagram-agent-io dd{color:#8395ae}\n@media(max-width:1100px){.rich-architecture .arch-products,.rich-architecture .arch-products:has(>article:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))}.rich-flow .flow-track{grid-template-columns:repeat(3,minmax(0,1fr))}.rich-flow .flow-step:after{display:none}.diagram-product-copy{padding:19px}.diagram-flow-overview{gap:23px}.diagram-overview-copy h3{font-size:21px}}\n@media(max-width:700px){.rich-architecture .arch-products,.rich-architecture .arch-products:has(>article:nth-child(4)){grid-template-columns:1fr;gap:18px}.diagram-product-image img{height:150px}.diagram-product-copy{padding:20px}.diagram-product h3{font-size:20px}.diagram-product p{font-size:13px}.diagram-product dl>div{gap:10px}.diagram-product dt,.diagram-product dd{font-size:12px}.rich-architecture .arch-core{padding:18px}.diagram-core-grid,.diagram-connections{grid-template-columns:1fr;gap:19px}.diagram-core-grid{margin-top:19px;padding-top:19px}.rich-architecture .arch-interface{padding:18px}.diagram-core-grid article+article,.diagram-connections article+article{padding-top:16px;border-top:1px solid #e4ecf6}.diagram-scope-note{font-size:10px}.diagram-flow-overview{grid-template-columns:1fr;gap:22px;padding:19px 0 23px}.diagram-flow-overview figure img{height:175px}.diagram-overview-copy h3{font-size:21px;margin:10px 0 15px}.diagram-overview-copy dl>div{grid-template-columns:56px 1fr;gap:10px}.diagram-overview-copy dt,.diagram-overview-copy dd{font-size:12px}.rich-flow .flow-track{grid-template-columns:1fr;gap:19px;margin:23px 0}.rich-flow .flow-step{display:grid;grid-template-columns:42px minmax(0,1fr);gap:5px 13px;padding:19px 17px}.diagram-step-icon{grid-row:1\u002F4;grid-column:1;margin:0}.rich-flow .flow-step>span{grid-row:auto;grid-column:2;font-size:10px;margin:0}.rich-flow .flow-step h3{grid-column:2;font-size:17px;margin:0}.diagram-step-role{grid-column:2;font-size:11px;margin:0 0 5px}.rich-flow .flow-step p{grid-column:1\u002F-1;font-size:12px;margin:7px 0 10px}.diagram-step-output{grid-column:1\u002F-1;margin:0;padding-top:10px}.diagram-step-output span{display:inline;margin-right:10px}.diagram-step-output b{display:inline;font-size:12px}.rich-flow .flow-step:after{display:block;content:'↓';top:auto;bottom:-22px;left:50%;right:auto}.rich-flow .flow-step:last-child:after{display:none}.diagram-exception{padding:16px;gap:10px}.diagram-exception h4{font-size:13px}.diagram-exception p{font-size:11px}.rich-system-parts .diagram-home-image img{height:150px}}\n\n\u002F* Keep V11 geometry; add behavior and accessibility without re-theming the portal. *\u002F\nimg{height:auto}.hero-art img{height:auto}.case-zoom{display:block;cursor:zoom-in}.case-zoom img{width:100%;height:auto}\n.footergrid a.inline-phone{display:inline;font-size:inherit;color:inherit;margin:0}\n.home-page .header-contact{display:flex;flex-direction:column;justify-content:center;flex-shrink:0;gap:3px;white-space:nowrap;line-height:1.4;padding-left:20px;border-left:1px solid #e1e9f4}\n.home-page .header-contact span{font-size:11px;color:#8191a7}\n.home-page .header-contact strong{font-size:17px;font-weight:600;letter-spacing:.02em;color:#2863d7}\n.home-page .header-contact:hover strong{color:#174fae}\n.home-page .topline-contact{display:none}\n.home-page #process .process-illustration{background:#fff}\n.home-page #process .process-grid>article{display:flex;flex-direction:column}\n.home-page #process .step-illustration{display:block;width:160px;height:190px;align-self:center;margin:2px 0 20px;background-color:#fff;background-size:960px 320px;background-position:calc(var(--stage) * -160px) center;background-repeat:no-repeat;flex-shrink:0}\n.home-page #process .process-grid .step-result{margin-top:auto}\n.home-page #process .process-illustration img{display:block;width:100%;height:auto;aspect-ratio:3\u002F1;object-fit:contain;mix-blend-mode:normal;background:#fff}\n.home-page #process .process-illustration figcaption{grid-template-columns:repeat(6,minmax(0,1fr));gap:0;padding:16px 0;background:#fff}\n@media(max-width:650px){.home-page #process .process-illustration figcaption{padding:12px 0;font-size:9px}}\n@media(min-width:1024px){\n .home-page #capabilities>.wrap{max-width:1380px}\n .home-page #capabilities .service-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}\n .home-page #capabilities .service{display:flex;flex-direction:column;padding:24px 22px;min-width:0}\n .home-page #capabilities .service h3{font-size:22px;line-height:1.5}\n .home-page #capabilities .service-summary{font-size:13px;min-height:47px}\n .home-page #capabilities .service-illustration{margin-left:-22px;margin-right:-22px}\n .home-page #capabilities .service-illustration img{height:165px}\n .home-page #capabilities .service dl>div{grid-template-columns:90px minmax(0,1fr);gap:10px;min-height:64px;align-items:start}\n .home-page #capabilities .service dt,.home-page #capabilities .service dd{font-size:12px;line-height:1.9}\n .home-page #capabilities .service-output{padding:12px;gap:9px;min-height:67px}\n .home-page #capabilities .service>.text-link{margin-top:auto}\n}\n@media(min-width:1600px){.home-page header .nav{position:relative}.home-page .header-contact{position:absolute;left:calc(100% + 20px);top:50%;transform:translateY(-50%)}}\n@media(min-width:1151px) and (max-width:1599px){.home-page header .nav{gap:20px}.home-page header .nav>nav{gap:19px;font-size:13px}.home-page .header-contact{padding-left:15px}.home-page .header-contact strong{font-size:15px}}\n@media(max-width:1150px){.home-page .header-contact{display:none}.home-page .topline-contact{display:block;white-space:nowrap;flex-shrink:0;color:#456fa6;font-size:10px}.home-page .topline .wrap{gap:10px}.home-page .topline .wrap>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-page .topline .wrap>span:last-of-type{display:none}}\na:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #245acc;outline-offset:4px}\n.skip-link{position:fixed;top:8px;left:16px;transform:translateY(-180%);z-index:100;padding:12px 20px;background:white;border:2px solid var(--blue)}.skip-link:focus{transform:none}\n.copy-contact{cursor:pointer;appearance:none;letter-spacing:inherit;text-align:inherit}.copy-contact:hover{color:var(--blue);border-color:var(--blue)}\n.copy-status:empty{display:none}.copy-status{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);padding:12px 22px;background:#14243c;color:white;border-radius:8px;z-index:30;font-size:14px;max-width:calc(100% - 32px);box-shadow:0 6px 20px #14243c25}\n.image-dialog{width:min(1500px,96vw);max-height:94vh;border:1px solid var(--line);border-radius:10px;padding:46px 12px 12px;background:#f5f8fd}.image-dialog::backdrop{background:#14243cbd}.image-dialog img{width:100%;max-height:calc(94vh - 100px);object-fit:contain}.image-dialog p{text-align:center;font-size:12px;margin-top:8px}.dialog-close{position:absolute;right:14px;top:8px;border:0;background:transparent;padding:4px 12px;cursor:pointer;color:var(--ink)}\n@media(min-width:701px) and (max-width:980px){.navlinks{gap:10px;font-size:11px}body:not(.home-page) .nav{gap:12px}body:not(.home-page) .brand span{display:none}.nav>.btn{padding:8px 10px;font-size:12px}.article-layout{grid-template-columns:minmax(0,1fr) 230px;gap:30px}.cols4{grid-template-columns:repeat(2,minmax(0,1fr))}.steps{grid-template-columns:repeat(3,minmax(0,1fr))}.hero-grid{gap:24px}.split{gap:28px}}\n@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}\n@media print{header,.topbar,footer,.cta,.copy-status,.skip-link,.image-dialog{display:none}.wrap{width:100%}body{color:black}.section{break-inside:avoid}}\n\n.ws-topbar{background:#f5f8fc;color:#67778b;font-size:11px;line-height:28px}.ws-topbar .wrap{display:flex;justify-content:space-between;gap:12px}.ws-topbar a{white-space:nowrap}.ws-header{position:relative;z-index:20;background:#fff;border-bottom:1px solid #dce6f3}.ws-header .ws-nav{width:min(1320px,calc(100% - 64px));height:88px;display:flex;align-items:center;gap:24px}.ws-header .ws-brand{margin-right:auto;gap:9px;font-size:23px;flex:none}.ws-header .ws-brand b{display:flex;align-items:center;gap:9px;white-space:nowrap}.ws-header .ws-brand img{width:22px;height:33px;margin:0}.ws-header .ws-brand span{display:inline;font-size:12px;letter-spacing:.07em}.ws-header .ws-desktop-nav{display:flex;align-items:center;gap:23px;font-size:13px;flex:none}.ws-header .ws-nav-link{position:relative;display:inline-flex;align-items:center;gap:8px;height:44px;white-space:nowrap;font-weight:500;color:#17283e;transition:color .18s,background .18s,box-shadow .18s}.ws-header .ws-nav-link:hover{color:#2863d9}.ws-header .ws-nav-link[aria-current=page]{color:#2863d9;font-weight:700}.ws-header .ws-nav-link[aria-current=page]:after{content:\"\";height:3px;position:absolute;bottom:-9px;left:0;right:0;border-radius:3px;background:#2863d9}.ws-header .ws-featured{padding:0 12px;border:1px solid #b5cff9;border-radius:8px;color:#2863d9;font-weight:700;background:linear-gradient(110deg,#f1f7ff,#fff);box-shadow:0 3px 12px #2863d910}.ws-header .ws-featured:hover{background:#eaf3ff;box-shadow:0 4px 16px #2863d920}.ws-header .ws-featured[aria-current=page]{background:linear-gradient(110deg,#dceaff,#edf5ff);border-color:#8bb6f6}.ws-header .ws-agent-symbol{position:absolute;top:3px;left:3px;display:block;width:12px;height:12px;color:#2863d9;pointer-events:none}.ws-header .ws-contact{font-size:12px;padding:10px 15px;min-height:42px;flex:none;background:#2863d9;border-color:#2863d9}.ws-header .ws-mobile-agent,.ws-header .ws-mobile-menu{display:none}.ws-header .ws-home-jumps{border-top:1px solid #dce6f3;margin-top:8px;padding-top:8px}.ws-header .ws-home-jumps a{font-size:12px}.ws-header .ws-contact:hover{background:#1e52bc}\n@media(min-width:1201px) and (max-width:1380px){.ws-header .ws-nav{gap:17px}.ws-header .ws-desktop-nav{gap:16px;font-size:12px}.ws-header .ws-brand{font-size:21px}.ws-header .ws-brand span{font-size:11px}.ws-header .ws-contact{padding:9px 12px}.ws-header .ws-featured{padding:0 10px}}\n@media(max-width:1200px){.ws-header .ws-desktop-nav,.ws-header .ws-contact{display:none!important}.ws-header .ws-nav{height:76px;gap:18px;width:calc(100% - 48px)}.ws-header .ws-mobile-agent{display:flex;align-items:center;gap:6px;border:1px solid #b5cff9;background:#f0f6ff;color:#2863d9;border-radius:7px;padding:7px 11px;font-size:13px;font-weight:700;white-space:nowrap;position:relative}.ws-header .ws-mobile-agent.active:after{content:\"\";position:absolute;bottom:-6px;left:0;right:0;height:3px;background:#2863d9;border-radius:2px}.ws-header .ws-mobile-menu{display:block;position:relative;margin:0;flex:none}.ws-header .ws-mobile-menu summary{display:grid;place-items:center;list-style:none;cursor:pointer;width:38px;height:40px;border:1px solid #e0e8f4;border-radius:6px;background:white}.ws-header .ws-mobile-menu summary::-webkit-details-marker{display:none}.ws-header .ws-mobile-links{position:absolute;right:0;top:51px;z-index:25;width:280px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 128px);overflow-y:auto;padding:13px;background:#fff;border:1px solid #dce6f3;box-shadow:0 16px 36px #17283e1c;border-radius:10px;display:block}.ws-header .ws-mobile-menu:not([open]) .ws-mobile-links{display:none}.ws-header .ws-mobile-links a{position:relative;display:flex;justify-content:space-between;align-items:center;padding:11px 12px;font-size:14px;color:#17283e;border-radius:5px;margin:2px 0}.ws-header .ws-mobile-links a[aria-current=page]{color:#2863d9;background:#f2f6fd;font-weight:700}.ws-header .ws-mobile-links a[aria-current=page]:before{content:\"\";position:absolute;left:0;width:3px;top:12px;bottom:12px;background:#2863d9;border-radius:3px}.ws-header .ws-mobile-links .ws-featured-mobile{border:1px solid #b5cff9;background:#f0f6ff;color:#2863d9;font-weight:700}.ws-topbar .wrap{width:calc(100% - 48px)}}\n@media(max-width:600px){.ws-topbar{font-size:10px}.ws-topbar .wrap{width:calc(100% - 32px)}.ws-topbar .wrap>span{max-width:44%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-header .ws-nav{width:calc(100% - 32px);height:72px;gap:10px}.ws-header .ws-brand{font-size:20px;gap:6px}.ws-header .ws-brand b{display:block}.ws-header .ws-brand span{display:block;font-size:8px;margin-top:4px;letter-spacing:.04em}.ws-header .ws-brand img{width:18px;height:30px}.ws-header .ws-mobile-agent{font-size:12px;padding:6px 8px;gap:4px}.ws-header .ws-mobile-menu summary{width:33px}}\n\n\u002F* A faint brand-blue band travels left to right over the original light surface. *\u002F\n.ws-header .ws-nav a:is(.ws-featured,.ws-mobile-agent,.ws-featured-mobile) {\n color: #2863d9;\n border-color: #b5cff9;\n background: linear-gradient(105deg,#2863d900 0%,#2863d90a 25%,#2863d91f 50%,#2863d90a 75%,#2863d900 100%), linear-gradient(110deg,#f1f7ff,#fff);\n background-size: 55% 100%, 100% 100%;\n background-repeat: no-repeat;\n background-position: -130% 0, 0 0;\n animation: ws-agent-flow 6s ease-in-out infinite;\n box-shadow: 0 3px 12px #2863d910;\n transition: box-shadow .2s, border-color .2s;\n}\n.ws-header .ws-nav a:is(.ws-featured,.ws-mobile-agent,.ws-featured-mobile):hover {\n border-color: #8bb6f6;\n box-shadow: 0 4px 16px #2863d920;\n}\n.ws-header .ws-nav a:is(.ws-featured,.ws-mobile-agent,.ws-featured-mobile):focus-visible {\n outline: 2px solid #2863d9;\n outline-offset: 4px;\n}\n.ws-header .ws-nav a:is(.ws-featured,.ws-mobile-agent,.ws-featured-mobile) .ws-agent-symbol { color: #2863d9; }\n@keyframes ws-agent-flow {\n 0%,10% { background-position: -130% 0, 0 0; }\n 85%,100% { background-position: 230% 0, 0 0; }\n}\n@media(prefers-reduced-motion:reduce) {\n .ws-header .ws-nav a:is(.ws-featured,.ws-mobile-agent,.ws-featured-mobile) { animation: none; background-position: -130% 0, 0 0; }\n}\n\n\n  .support-launcher{position:fixed;left:22px;top:56%;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;width:78px;padding:13px 6px 12px;border:1px solid #b7d1ff;border-radius:20px;color:#fff;background:linear-gradient(145deg,#4488ff,#245be0);box-shadow:0 9px 25px #245be033;text-decoration:none;font-family:inherit;font-size:12px;font-weight:600;line-height:1.5;transition:transform .2s,box-shadow .2s}\n  .support-launcher:hover{transform:translateY(-4px);box-shadow:0 12px 30px #245be04a;color:#fff}\n  .support-launcher-icon{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#ffffff20}\n  .support-launcher-icon::before{content:'';position:absolute;inset:0;border:1px solid #ffffff90;border-radius:50%;animation:support-pulse 3s ease-out infinite;pointer-events:none}\n  .support-launcher svg{width:32px;height:32px}\n  .support-dialog{box-sizing:border-box;width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 40px);margin:auto;padding:32px;border:1px solid #d5e4fb;border-radius:20px;background:linear-gradient(155deg,#f0f6ff,#fff 48%);color:#19334f;box-shadow:0 24px 80px #16335630;overflow:auto}\n  .support-dialog::backdrop{background:#18335066;backdrop-filter:blur(4px)}\n  .support-close-form{margin:0}.support-close{position:absolute;right:14px;top:12px;display:grid;place-items:center;box-sizing:border-box;width:34px;height:34px;min-width:34px;min-height:34px;padding:0;border:0;border-radius:50%;background:#eaf1fc;color:#506a8d;line-height:1;cursor:pointer;appearance:none}.support-close svg{display:block;width:18px;height:18px;aspect-ratio:1;flex-shrink:0}\n  .support-eyebrow{display:block;color:#3d74c3;font-size:11px;letter-spacing:.04em;padding-right:22px}\n  .support-dialog h2{font-size:26px;line-height:1.5;margin:12px 0 10px}.support-dialog>p{font-size:13px;line-height:1.9;color:#647b98;margin:0}\n  .support-channels{display:grid;gap:12px;margin-top:24px}.support-channel{display:flex;align-items:center;gap:12px;padding:15px 12px;border:1px solid #e0e9f7;border-radius:10px;background:#fff}\n  .support-channel-icon{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;border-radius:9px;background:#eff5ff;color:#3475d9;font-size:17px}\n  .support-channel>div{min-width:0;flex:1}.support-channel>div>span{display:block;font-size:11px;color:#7c8fa8;margin-bottom:4px}.support-channel strong,.support-channel>div>a{display:block;font-size:17px;line-height:1.4;font-weight:600;white-space:nowrap;color:#234a7b;text-decoration:none;user-select:text}\n  .support-action{flex-shrink:0;border:1px solid #cfe0fd;border-radius:6px;background:#f1f6ff;padding:8px;color:#2863d9;font:inherit;font-size:11px;line-height:1.3;text-decoration:none;cursor:pointer;white-space:nowrap}.support-action:hover{background:#e1ecff}\n  .support-dialog .support-feedback{margin-top:12px;min-height:25px;font-size:12px;color:#2562bb;overflow-wrap:anywhere}.support-dialog .support-company{margin-top:12px;padding-top:14px;border-top:1px solid #e1e9f4;font-size:11px;text-align:center;color:#8595aa}\n  @keyframes support-pulse{0%{transform:scale(1);opacity:.8}75%,100%{transform:scale(1.45);opacity:0}}\n  @media(max-width:1300px){.support-launcher{top:auto;bottom:24px;left:16px}}\n  @media(max-width:700px){.support-launcher{left:12px;bottom:max(16px,env(safe-area-inset-bottom));width:60px;padding:9px 4px 8px;gap:5px;border-radius:16px;font-size:10px}.support-launcher-icon{width:33px;height:33px}.support-launcher svg{width:26px;height:26px}.support-dialog{padding:26px 18px 20px}.support-dialog h2{font-size:23px}.support-channel{gap:9px;padding:13px 10px}.support-channel-icon{display:none}.support-channel strong,.support-channel>div>a{font-size:16px}}\n  @media(prefers-reduced-motion:reduce){.support-launcher-icon::before{animation:none}.support-launcher{transition:none}.support-launcher:hover{transform:none}}\n  @media print{.support-launcher,.support-dialog{display:none!important}}\n\n.site-shell,.page-content{display:contents}\n\n\u002F* Keep native scrolling, with the primary navigation always within reach. *\u002F\nhtml { --site-header-height: 89px; scrollbar-width: none; scroll-padding-top: calc(var(--site-header-height) + 16px); }\nbody { scrollbar-width: none; }\nhtml::-webkit-scrollbar, body::-webkit-scrollbar { display: none; width: 0; height: 0; }\n.ws-header { position: sticky; top: 0; z-index: 40; box-shadow: 0 3px 14px #24324708; }\n.ws-header .ws-mobile-menu .ws-mobile-links { left: auto; right: 0; top: calc(100% + 11px); z-index: 25; padding: 13px; }\n@media(max-width:1200px) { html { --site-header-height: 77px; } }\n@media(max-width:600px) { html { --site-header-height: 73px; } }\n@media print { .ws-header { position: static; box-shadow: none; } }\n\n\u002F* Home content: readable type, neutral body copy, and restrained brand accents. *\u002F\n.home-page {\n  --reading-title: #243247;\n  --reading-body: #485568;\n  --reading-note: #627084;\n  --reading-line: #e8ecf1;\n}\n.home-page :is(.hero-work, #capabilities, #implementation) {\n  font-family: \"Microsoft YaHei UI\", \"Microsoft YaHei\", \"PingFang SC\", sans-serif;\n  letter-spacing: normal;\n}\n.home-page .hero-work {\n  background: #fff;\n  border-color: #e0e7ef;\n  padding: 24px;\n  gap: 20px;\n}\n.home-page .hero-work > div {\n  grid-template-columns: 32px minmax(0, 1fr);\n  gap: 6px 12px;\n}\n.home-page .hero-work span {\n  display: grid;\n  place-items: center;\n  align-self: start;\n  grid-row: 1 \u002F 3;\n  height: 32px;\n  padding: 0;\n  border-radius: 8px;\n  background: #f0f4fa;\n  color: #46618a;\n  font-size: 13px;\n  font-weight: 600;\n}\n.home-page .hero-work b { color: var(--reading-title); font-size: 16px; line-height: 1.6; font-weight: 600; }\n.home-page .hero-work small { color: var(--reading-body); font-size: 14px; line-height: 1.75; }\n.home-page .hero-work > i { color: #a6b1be; font-size: 18px; }\n\n.home-page #capabilities .service { background: #fff; border-color: #e0e6ef; box-shadow: 0 4px 18px #253b5710; }\n.home-page #capabilities .service h3 { color: var(--reading-title); font-weight: 600; }\n.home-page #capabilities .service-summary { color: var(--reading-body); font-size: 15px; line-height: 1.85; }\n.home-page #capabilities .service-illustration figcaption { color: var(--reading-note); font-size: 12px; line-height: 1.7; padding: 6px 8px 2px; }\n.home-page #capabilities .service dl { margin: 12px 0 0; }\n.home-page #capabilities .service dl > div {\n  grid-template-columns: 1fr;\n  gap: 4px;\n  padding: 15px 0;\n  min-height: 88px;\n  border-color: var(--reading-line);\n}\n.home-page #capabilities .service dl > div:first-child { border-top: 0; }\n.home-page #capabilities .service dt { font-size: 15px; line-height: 1.65; font-weight: 600; color: var(--reading-title); }\n.home-page #capabilities .service dd { font-size: 15px; line-height: 1.8; font-weight: 400; color: var(--reading-body); }\n.home-page #capabilities .service-output { display: block; min-height: 0; background: #f5f7fa; padding: 16px; margin: 12px 0 18px; border-radius: 8px; }\n.home-page #capabilities .service-output > span { display: block; color: var(--reading-note); font-size: 13px; line-height: 1.6; margin: 0 0 6px; }\n.home-page #capabilities .service-output p { color: var(--reading-title); font-size: 14px; line-height: 1.8; margin: 0; }\n.home-page #capabilities .text-link { font-size: 14px; line-height: 1.75; font-weight: 600; color: #285dc4; }\n\n.home-page #implementation .architecture { background: #fff; }\n.home-page #implementation .system-parts article { background: #fff; border-color: #e0e6ef; padding: 22px 20px; }\n.home-page #implementation .system-parts article > span { display: block; font-size: 13px; line-height: 1.7; font-weight: 500; color: var(--reading-note); }\n.home-page #implementation .system-parts h3 { color: var(--reading-title); font-size: 18px; font-weight: 600; line-height: 1.6; margin: 10px 0 14px; }\n.home-page #implementation .system-parts p { color: var(--reading-body); font-size: 15px; font-weight: 400; line-height: 1.85; }\n.home-page #implementation .system-parts small { color: var(--reading-note); font-size: 13px; line-height: 1.8; border-top: 0; padding-top: 0; margin-top: 14px; }\n.home-page #implementation .diagram-home-image { border: 0; background: #f7f9fc; }\n.home-page #implementation .system-parts .diagram-home-example { color: var(--reading-body); font-size: 14px; line-height: 1.85; border-color: var(--reading-line); margin: 18px 0 0; padding-top: 16px; }\n.home-page #implementation .diagram-home-example b { display: block; color: var(--reading-title); font-size: 14px; font-weight: 600; margin-bottom: 8px; }\n.home-page #implementation .external { background: #f7f9fc; border: 1px solid #e4e9f0; }\n.home-page #implementation .external > b { color: var(--reading-title); font-size: 15px; }\n.home-page #implementation .external > span { background: #fff; border-color: #e0e6ef; color: var(--reading-body); font-size: 13px; padding: 4px 10px; }\n.home-page #implementation .external > p { color: var(--reading-body); font-size: 14px; line-height: 1.85; }\n\n@media (max-width: 1100px) {\n  .home-page .hero-work { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }\n  .home-page .hero-work > i { display: none; }\n  .home-page #implementation .system-parts { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n@media (max-width: 650px) {\n  .home-page .hero-work { padding: 20px 16px; gap: 24px 16px; }\n  .home-page .hero-work > div { grid-template-columns: 1fr; gap: 7px; }\n  .home-page .hero-work span { grid-row: auto; width: 30px; height: 30px; }\n  .home-page .hero-work b { font-size: 15px; }\n  .home-page .hero-work small { font-size: 13px; }\n  .home-page #capabilities .service dl > div { min-height: 0; padding: 15px 0; }\n  .home-page #implementation .system-parts { grid-template-columns: 1fr; }\n}\n\n\u002F* Shared reading scale. Brand headings and navigation keep their own layout. *\u002F\nbody { --muted: #485568; --reading-title: #243247; --reading-body: #485568; --reading-note: #627084; }\n#main-content {\n  font-family: \"Microsoft YaHei UI\", \"Microsoft YaHei\", \"PingFang SC\", sans-serif;\n  font-size: 16px;\n  color: var(--reading-title);\n  line-height: 1.85;\n}\n#main-content :is(p, dd, td, li) { font-size: 16px; line-height: 1.85; color: var(--reading-body); }\n#main-content :is(h2, h3, h4) { color: var(--reading-title); font-weight: 600; letter-spacing: normal; line-height: 1.55; }\n#main-content :is(dt, summary) { font-size: 15px; line-height: 1.8; color: var(--reading-title); }\n#main-content :is(small, figcaption) { font-size: 14px; line-height: 1.8; color: var(--reading-note); }\n#main-content :is(.btn, .ag-button, .link, .text-link) { font-size: 14px; line-height: 1.6; }\n#main-content :is(.hero-lead, .lead) { font-size: 18px; }\n#main-content :is(.eyebrow, .kicker, .visual-kicker, .ag-eyebrow) { font-size: 13px; letter-spacing: .04em; }\n#main-content :is(.concept-note, .diagram-scope-note, .hero-note, .implementation-note, .product-line, .article-meta) { font-size: 14px; color: var(--reading-note); }\n#main-content :is(.chip, .mini-label, .diagram-node-number, .diagram-step-role, .step-no, .test-label) { font-size: 13px; line-height: 1.75; }\n#main-content :is(.diagram-overview-copy, .diagram-product, .diagram-agent-io) dl > div { gap: 12px; }\n#main-content :is(.diagram-overview-copy, .diagram-product, .diagram-agent-io) dd { font-size: 15px; }\n#main-content :is(.diagram-step-output, .step-result, .example-path, .example-result, .agent-actions, .delivery-list) b { font-size: 16px; line-height: 1.75; color: var(--reading-title); }\n#main-content :is(.diagram-step-output, .step-result, .arch-interface, .implementation-note, .agent-actions, .ai-bottom, .service-bottom) > span { font-size: 14px; line-height: 1.8; color: var(--reading-body); }\n#main-content :is(.architecture-top, .arch-label, .diagram-head, .flow-label) { font-size: 15px; color: var(--reading-title); }\n#main-content :is(.architecture-top, .arch-products, .example-context) > span { font-size: 14px; color: var(--reading-note); }\n#main-content :is(.behavior-table p, .method-intro) { font-size: 16px !important; line-height: 1.85 !important; }\n#main-content p.mini-label { font-size: 14px; }\n#main-content .guide-source { font-size: 14px !important; color: var(--reading-body); }\n\n\u002F* Home AI example and all later sections share the same readable type scale. *\u002F\n#main-content .ai-flow { background: #f6f8fb; border-color: #e0e6ef; padding: 28px; }\n#main-content .ai-flow > div:not(.flow-label) { padding: 19px 18px; border-color: #e0e6ef; gap: 16px; }\n#main-content .ai-flow > div > span { font-size: 14px; color: #627084; }\n#main-content .ai-flow b { font-size: 17px; line-height: 1.6; font-weight: 600; color: var(--reading-title); }\n#main-content .ai-flow small { font-size: 15px; line-height: 1.85; margin-top: 7px; color: var(--reading-body); }\n#main-content .ai-flow .approval b { color: #75551e; }\n#main-content .ai-copy li { padding: 20px 0; border-color: #e8ecf1; }\n#main-content .ai-copy li b { font-size: 17px; line-height: 1.6; color: var(--reading-title); }\n#main-content .ai-copy li span { font-size: 16px; line-height: 1.85; color: var(--reading-body); }\n#main-content .process-grid p { min-height: 0; }\n#main-content :is(.process-grid article > small, .delivery-list small) { font-size: 14px; }\n#main-content .process-grid article { background: #fff; }\n#main-content .step-result { background: #f5f7fa; }\n#main-content .step-result span { font-size: 14px; line-height: 1.75; color: var(--reading-note); }\n#main-content .faq-grid p { font-size: 16px; }\n\n\u002F* Agent UI mockups are readable content too; don't shrink them into tiny labels. *\u002F\n#main-content .ag-page { --ag-ink: #243247; --ag-muted: #485568; }\n#main-content .ag-page :is(.ag-tags > span, .ag-demo-label, .ag-status, .ag-pending, .ag-mini-trace > div, .ag-mini-trace b, .ag-mini-trace em, .ag-mini-trace strong, .ag-sources b, .ag-input-example, .ag-record-strip, .ag-window-bar, .ag-window-bar b) { font-size: 13px; line-height: 1.75; }\n#main-content .ag-page :is(.ag-tags > span, .ag-demo-label, .ag-input-example, .ag-record-strip) { color: #526174; }\n#main-content .ag-page :is(.ag-window-bar small, .ag-mini-trace small, .ag-sources small) { font-size: 12px; color: #627084; }\n#main-content .ag-page :is(.ag-pipeline b, .ag-answer > b, .ag-path-nodes b, .ag-layer-items > span) { font-size: 15px; line-height: 1.7; }\n#main-content .ag-page :is(.ag-pipeline small, .ag-boundary span, .ag-layer-label p) { font-size: 14px; white-space: normal; }\n#main-content .ag-page :is(.ag-breadcrumb, .ag-section-nav a[data-agent-section], .ag-source-detail summary) { font-size: 14px; }\n#main-content .ag-page .ag-knowledge-body aside > :is(span, b) { font-size: 12px; white-space: normal; }\n#main-content .ag-page :is(.ag-answer p, .ag-source-detail > p, .ag-user-message, .ag-scenarios dd) { font-size: 15px; }\n#main-content .ag-page .ag-scenarios dt { font-size: 14px; }\n#main-content .ag-page .ag-layer-label p { font-size: 14px; }\n#main-content .ag-page .ag-trace-title { flex-wrap: wrap; gap: 6px 12px; }\n#main-content .ag-page .ag-status { white-space: normal; }\n#main-content .ag-page .ag-stage-card p { display: block; }\n#main-content .ag-page .ag-stage-card p > b { font-size: 14px; display: block; width: fit-content; margin-bottom: 5px; color: #526174; background: transparent; padding: 0; }\n#main-content .ag-page pre { font-size: 13px; line-height: 1.9; }\n#main-content .ag-page pre code { font: inherit; }\n#main-content .ag-page .ag-comment { color: #657284; }\n#main-content .ag-page .ag-hero-art { height: auto; min-height: 500px; display: flex; justify-content: flex-end; align-items: flex-start; padding-top: 45px; }\n#main-content .ag-page .ag-hero-art > .ag-code-window { position: relative; top: auto; right: auto; width: 82%; }\n#main-content .ag-page .ag-mini-trace > div { gap: 10px; flex-wrap: wrap; }\n#main-content .ag-page .ag-mini-trace :is(em, strong) { flex-shrink: 0; }\n#main-content .ag-page .ag-sources { grid-template-columns: 1fr; }\n#main-content .ag-page .ag-layer-items { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n#main-content .ag-page .ag-knowledge-body { grid-template-columns: 145px minmax(0, 1fr); }\n#main-content .ag-page :is(.ag-small, .ag-deploy-note, .ag-text-button) { font-size: 14px !important; }\n#main-content .ag-page :is(.ag-question b, .ag-reference b, .ag-audit b, .ag-audit span, .ag-preparation b, .ag-related b, .ag-related a) { font-size: 14px; line-height: 1.8; }\n#main-content .ag-page :is(.ag-window-bar small, .ag-mini-trace small, .ag-sources small) { font-size: 13px; }\n#main-content .ag-page .ag-inline-code { font-size: 14px; overflow-wrap: anywhere; }\n#main-content .ag-page .ag-related { gap: 16px; }\n.site-shell > footer :is(p, a, span) { font-size: 14px; line-height: 1.85; }\n.site-shell > footer p { color: #627084; }\n\n@media (max-width: 900px) {\n  #main-content .ag-page .ag-pipeline { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }\n  #main-content .ag-page .ag-pipeline > div::after { display: none; }\n}\n@media (max-width: 650px) {\n  #main-content .ai-flow { padding: 18px; }\n  #main-content .ai-flow > div:not(.flow-label) { padding: 16px 14px; gap: 12px; }\n  #main-content .process-illustration figcaption { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 18px; }\n  #main-content .ag-page .ag-pipeline { grid-template-columns: repeat(2, minmax(0, 1fr)); text-align: left; }\n  #main-content .ag-page .ag-pipeline > div { align-items: flex-start; }\n  #main-content .ag-page .ag-hero-art { min-height: 0; padding-top: 35px; padding-bottom: 15px; }\n  #main-content .ag-page .ag-hero-art > .ag-code-window { width: 100%; }\n  #main-content .ag-page .ag-knowledge-body { grid-template-columns: 1fr; }\n  #main-content .ag-page .ag-knowledge-body aside { flex-wrap: wrap; gap: 8px; }\n  #main-content .ag-page .ag-stages { grid-template-columns: 1fr; }\n  #main-content .ag-page .ag-preparation { grid-template-columns: 1fr; }\n  #main-content .ag-page .ag-exceptions { grid-template-columns: 1fr; }\n  #main-content .ag-page .ag-demo-actions { flex-wrap: wrap; }\n  #main-content .ag-page .ag-section-nav a[data-agent-section] { font-size: 14px; }\n}\n\n\u002F* Blue, quiet motion. Animate decoration and groups, never the body copy itself. *\u002F\n@keyframes ws-enter { from { opacity:0; transform:translateY(26px); } to { opacity:1; transform:translateY(0); } }\n@keyframes ws-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-12px); } }\n@keyframes ws-orbit { 0%,100% { transform:rotate(-15deg) scale(1); opacity:.6; } 50% { transform:rotate(-8deg) scale(1.035); opacity:1; } }\n@keyframes ws-beacon { 0%,100% { box-shadow:0 0 0 1px #2863d926; } 50% { box-shadow:0 0 0 12px #2863d908; } }\n@keyframes ws-travel { 0%,12% { transform:translateX(-160%); opacity:0; } 22%,68% { opacity:.8; } 85%,100% { transform:translateX(640%); opacity:0; } }\n@keyframes ws-node { 0%,65%,100% { opacity:.55; transform:translateX(0); } 25% { opacity:1; transform:translateX(5px); } }\n\n@media (prefers-reduced-motion:no-preference) {\n [data-motion-state=\"pending\"] { opacity:0; transform:translateY(26px); }\n [data-motion-state=\"visible\"] { animation:ws-enter .8s cubic-bezier(.22,1,.36,1) var(--motion-delay,0ms) backwards; }\n [data-motion-state=\"pending\"]:focus-within { opacity:1; transform:none; }\n\n \u002F* First impressions: text first, illustration next, workflow last. *\u002F\n .home-page .hero-text > *, .ag-hero .ag-hero-copy > * {\n  animation:ws-enter .85s cubic-bezier(.22,1,.36,1) backwards;\n }\n .home-page .hero-text > :nth-child(2), .ag-hero .ag-hero-copy > :nth-child(2) { animation-delay:100ms; }\n .home-page .hero-text > :nth-child(3), .ag-hero .ag-hero-copy > :nth-child(3) { animation-delay:200ms; }\n .home-page .hero-text > :nth-child(4), .ag-hero .ag-hero-copy > :nth-child(4) { animation-delay:300ms; }\n .home-page .hero-text > :nth-child(n+5), .ag-hero .ag-hero-copy > :nth-child(n+5) { animation-delay:400ms; }\n .home-page .technology-hero, .ag-hero .ag-hero-art { animation:ws-enter 1.1s cubic-bezier(.22,1,.36,1) .16s backwards; }\n .home-page .technology-hero img, .ag-core, .ag-stack-figure svg { animation:ws-float 5.8s ease-in-out infinite; }\n .home-page .technology-hero::before { animation:ws-orbit 9s ease-in-out infinite; }\n .home-page .technology-hero::after { animation:ws-beacon 3s ease-in-out infinite; }\n .home-page .hero-work { animation:ws-enter .9s cubic-bezier(.22,1,.36,1) .5s backwards; }\n\n \u002F* A thin light travels along the workflow, away from its text. *\u002F\n .home-page .hero-work, .ag-pipeline { position:relative; overflow:hidden; }\n .home-page .hero-work::after, .ag-pipeline::after {\n  content:''; position:absolute; pointer-events:none; bottom:0; left:0; width:20%; height:2px;\n  background:linear-gradient(90deg,transparent,#82b6ff,#2863d9,transparent);\n  animation:ws-travel 4.8s ease-in-out infinite;\n }\n .home-page .hero-work > i, .ag-pipeline > div:not(:last-child)::after { animation:ws-node 3s ease-in-out infinite; }\n .home-page .hero-work > i:nth-of-type(2), .ag-pipeline > div:nth-child(2)::after { animation-delay:.45s; }\n .home-page .hero-work > i:nth-of-type(3), .ag-pipeline > div:nth-child(3)::after { animation-delay:.9s; }\n .ag-pipeline > div:nth-child(4)::after { animation-delay:1.35s; }\n\n .motion-paused *, .motion-paused *::before, .motion-paused *::after { animation-play-state:paused !important; }\n\n @media (hover:hover) and (pointer:fine) {\n  #main-content :is(.service,.project-card,.article-card,.solution-card,.system-parts > article,.process-grid > article,.ag-scenarios > article) {\n   transition:translate .3s ease,box-shadow .3s ease,border-color .3s ease;\n  }\n  #main-content :is(.service,.project-card,.article-card,.solution-card,.system-parts > article,.process-grid > article,.ag-scenarios > article):hover {\n   translate:0 -5px; border-color:#a9c8f4; box-shadow:0 16px 36px #285fa416;\n  }\n  .service-illustration img { transition:transform .45s ease; }\n  .service:hover .service-illustration img { transform:scale(1.035); }\n  :is(.btn,.ag-button) { transition:translate .25s ease,box-shadow .25s ease; }\n  :is(.btn,.ag-button):hover { translate:0 -2px; box-shadow:0 8px 20px #2863d922; }\n  :is(.btn,.ag-button) > span { display:inline-block; transition:transform .25s ease; }\n  :is(.btn,.ag-button):hover > span { transform:translateX(3px); }\n }\n}\n@media(prefers-reduced-motion:reduce), print {\n [data-motion-state] { opacity:1 !important; transform:none !important; animation:none !important; }\n .site-shell *, .site-shell *::before, .site-shell *::after { animation:none !important; transition:none !important; }\n}\n",1791534863831]