当前位置: 首页 > article >正文

Lovable主题定制深度教程:不改一行PHP代码,实现品牌专属UI/UX升级(仅限当前版本v4.8.3私有补丁包)

更多请点击 https://codechina.net第一章Lovable主题定制深度教程不改一行PHP代码实现品牌专属UI/UX升级仅限当前版本v4.8.3私有补丁包Lovable v4.8.3 通过其增强型 CSS 变量体系与声明式主题注入机制首次支持零 PHP 修改的品牌级 UI/UX 定制。所有样式覆盖均通过assets/css/custom-theme.css文件注入由主题内置的theme-loader.js动态解析并挂载至:root确保优先级高于默认样式且不干扰核心逻辑。启用私有补丁包确保已将官方提供的lovable-patch-v4.8.3-private.zip解压至主题根目录并在 WordPress 后台 → 外观 → 自定义 → 高级设置中勾选「启用品牌补丁模式」。该操作会自动激活变量预编译器与 SVG 图标替换引擎。覆盖核心品牌色与字体栈/* assets/css/custom-theme.css */ :root { --brand-primary: #2a5b8c; /* 主色调深海蓝 */ --brand-secondary: #ff6b35; /* 辅助色活力橙 */ --font-heading: Inter, -apple-system, BlinkMacSystemFont, sans-serif; --font-body: Noto Sans SC, system-ui, sans-serif; --radius-base: 8px; /* 统一圆角 */ }此 CSS 将被主题运行时自动注入为全局 CSS 变量所有组件按钮、卡片、导航栏等均响应式继承无需修改任何 HTML 或 PHP 模板文件。自定义 SVG 图标映射表私有补丁包提供icons/brand-icons.json用于声明图标别名到 SVG 路径的映射别名SVG 路径用途logo-brand/assets/svg/logo-custom.svg顶部导航栏 Logoicon-hamburger/assets/svg/menu-filled.svg移动端菜单图标验证与调试建议打开浏览器开发者工具在 Console 中执行getComputedStyle(document.documentElement).getPropertyValue(--brand-primary)确认返回值为#2a5b8c检查 Network 面板确认custom-theme.css加载状态为 200 且无 MIME 类型警告禁用插件缓存后刷新页面避免旧 CSS 变量残留第二章Lovable v4.8.3主题架构与无侵入式定制原理2.1 主题继承机制与CSS/JS加载优先级解析主题继承链执行顺序WordPress 主题继承遵循 child → parent → twentytwentyfour或默认主题的向上查找路径模板文件缺失时自动回退。CSS 加载优先级规则父主题style.css通过wp_enqueue_style()注册handle 为parent-style子主题需显式依赖该 handle确保级联生效// functions.php 中正确声明依赖 wp_enqueue_style(child-style, get_stylesheet_uri(), [parent-style]);此代码强制浏览器先解析父主题样式再叠加子主题覆盖规则避免 CSS 特异性冲突。JS 执行时机对比钩子执行阶段适用场景wp_enqueue_scriptsHTML head 渲染前基础库jQuery、Lodashwp_footerbody 结束前非阻塞交互脚本2.2 Tailwind CSS配置层与Design Token映射实践配置层结构解析Tailwind 的tailwind.config.js是 Design Token 映射的中枢。核心在于theme.extend与plugins的协同module.exports { theme: { extend: { colors: { brand-primary: var(--color-primary), brand-secondary: var(--color-secondary), }, spacing: { container-sm: var(--space-sm), } } } }该配置将 CSS 自定义属性Design Token注入 Tailwind 的类生成系统实现设计系统与工程实现的双向绑定。Token 映射验证表Design TokenCSS 变量Tailwind 类Primary Color--color-primarybg-brand-primarySmall Spacing--space-smp-container-sm2.3 Webpack构建管道拦截与资产重写实操构建管道拦截时机Webpack 提供 compilation.hooks.processAssets 钩子在资产生成后、输出前执行拦截。需指定 stage 以控制优先级compilation.hooks.processAssets.tapAsync({ name: AssetRewriter, stage: webpack.Compilation.PROCESS_ASSETS_STAGE_DERIVED }, (assets, callback) { // 对 assets 进行重写逻辑 callback(); });该钩子在 PROCESS_ASSETS_STAGE_DERIVED 阶段触发确保源码已转换为最终 asset如 JS/CSS但尚未压缩或写入磁盘。资产内容重写示例遍历compilation.assets获取原始内容使用source().toString()读取并正则替换资源路径通过updateAsset()安全更新内容重写前后对比场景重写前重写后CSS 背景图路径url(/img/logo.png)url(/v1.2.0/img/logo.png)2.4 自定义属性CSS Custom Properties驱动的动态主题引擎核心机制级联与运行时重计算CSS 自定义属性又称 CSS 变量在 DOM 树中继承并支持 JavaScript 动态修改触发浏览器自动重绘无需手动切换 class 或重载样式表。:root { --primary-color: #3b82f6; /* 蓝色主色调 */ --bg-surface: #ffffff; --text-base: #1f2937; } .dark-theme { --primary-color: #60a5fa; --bg-surface: #111827; --text-base: #f9fafb; }该声明定义了主题变量的默认值与暗色变体:root提供全局作用域而.dark-theme类通过层叠覆盖变量值实现零 JS 样式切换。JavaScript 主题同步示例读取用户偏好window.matchMedia((prefers-color-scheme: dark))动态设置document.documentElement.style.setProperty(--primary-color, #8b5cf6)持久化存储localStorage 保存用户选择的主题模式主题变量映射表用途变量名默认值主按钮背景--btn-primary-bg#3b82f6卡片阴影--card-shadow0 1px 3px rgba(0,0,0,0.1)2.5 私有补丁包签名验证与热插拔加载机制签名验证流程系统启动时校验补丁包的 ECDSA-SHA256 签名确保仅信任由私钥持有者发布的合法更新err : ecdsa.Verify(pubKey, hash[:], sigR.Bytes(), sigS.Bytes()) if err ! nil { return errors.New(invalid signature) // 签名不匹配即拒绝加载 }pubKey来自预置白名单证书hash是补丁元数据与二进制内容的联合摘要sigR/sigS为 DER 解析后的椭圆曲线签名分量。热插拔生命周期检测inotify 监控/patches/目录新增文件验证执行签名完整性双重校验加载动态注册符号表并触发模块初始化钩子验证状态对照表状态码含义处理动作0x01签名有效且哈希一致启用新版本卸载旧实例0x0E公钥不在白名单静默丢弃记录审计日志第三章品牌视觉系统落地四步法3.1 品牌色阶、字体栈与间距标尺的原子化提取设计系统原子层解构将视觉规范拆解为可编程的原子单元色值映射为 CSS 自定义属性字体层级转为 font-size 与 line-height 组合间距基于 4px 基准倍数生成。原子化配置示例:root { /* 色阶 */ --color-primary-50: #f0f9ff; --color-primary-500: #0ea5e9; /* 字体栈 */ --font-sans: -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif; /* 间距标尺 */ --space-2: 0.5rem; /* 8px */ --space-4: 1rem; /* 16px */ }该声明建立跨组件复用的视觉契约。--color-primary-500 作为主色基准支持无障碍对比度计算--space-4 对应设计稿中标准间距单位确保开发与 Figma 像素对齐。原子参数对照表类型设计值CSS 变量使用场景色阶#0ea5e9--color-primary-500按钮悬停、链接高亮字体Inter, system-ui--font-sans正文、卡片标题3.2 SVG图标集注入与无障碍语义化封装SVG Sprites 注入策略采用内联 SVG Sprite 方式批量注入图标避免 HTTP 请求开销并支持样式复用svg aria-hiddentrue styleposition: absolute; width: 0; height: 0; defs symbol idicon-home viewBox0 0 24 24 path dM10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z/ /symbol /defs /svg该代码将所有图标定义为symbol元素通过id唯一标识viewBox确保缩放一致性aria-hiddentrue阻止屏幕阅读器重复播报装饰性图标。语义化封装组件roleimg显式声明图形角色aria-label提供可访问的替代文本动态绑定focusablefalse防止键盘焦点干扰属性映射对照表Props对应 ARIA 属性适用场景labelaria-label图标有明确功能语义如“搜索”hiddenaria-hiddentrue纯装饰性图标3.3 响应式断点重定义与跨设备交互反馈调优断点策略动态化传统固定断点如 768px、1024px难以适配新型折叠屏与车载终端。现代方案采用容器查询Container Queries结合运行时设备能力探测container (min-width: 320px) { .card { grid-template-columns: 1fr; } } container (min-width: 640px) { .card { grid-template-columns: repeat(2, 1fr); } }该写法脱离 viewport 依赖依据组件自身容器宽度响应避免全局布局坍塌min-width指容器内容区最小可用宽度单位支持px、rem及自定义 CSS 变量。触控反馈精细化短按60ms触发pointerdownpointerup启用scale(0.95)微缩放长按≥350ms激活上下文菜单禁用默认滚动设备特性映射表设备类型推荐断点范围反馈延迟阈值折叠手机展开800–1200px80ms车载中控屏1024–1440px120ms第四章核心业务组件的零代码UI增强方案4.1 商品卡片组件的视觉分层与动效钩子注入视觉层级结构定义商品卡片采用 Z-index 分层模型背景层z-10、内容层z-0、悬停浮层z-20和动效遮罩层z-30。各层通过 CSS 自定义属性解耦.card { --layer-bg: -10; --layer-content: 0; --layer-hover: 20; --layer-mask: 30; }该设计支持主题动态切换避免硬编码层级冲突。动效钩子注入机制通过 React ref useEffect 注入生命周期钩子mount 时注册 IntersectionObserver 监听可视区域hover 时触发 CSS 变量更新与 GSAP 时间轴调度unmount 前自动清理所有动画帧与事件监听器钩子参数对照表钩子类型触发时机可配置参数onEnterView进入视口 20% 区域threshold, rootMarginonHoverStart鼠标移入且停留 ≥150msdelay, easing4.2 购物车侧边栏的渐进式加载与状态可视化改造状态驱动的加载流程采用 React Suspense 自定义 Hook 实现分阶段渲染商品列表、价格摘要、优惠券模块依次挂载避免白屏。核心加载逻辑const useCartSidebarLoader () { const [stage, setStage] useState(loading-items); // loading-items → loading-summary → ready useEffect(() { fetchItems().then(() { setStage(loading-summary); return fetchSummary(); }).then(() setStage(ready)); }, []); return { stage }; };stage控制 UI 状态流转每个阶段触发对应骨架屏或占位组件提升感知性能。可视化状态映射表阶段值UI 表现可交互性loading-items商品骨架屏 进度条 30%禁用结算按钮loading-summary价格摘要骨架 进度条 70%仅允许删除商品ready完整数据 动画入场全功能启用4.3 结账流程步骤导航的语义化进度追踪与错误预判UI语义化状态映射结账导航需将用户操作映射为可机器解析的状态语义而非仅视觉样式切换{ step: shipping, status: validating, errors: [postal_code_invalid], next_enabled: false, aria-live: polite }该 JSON 片段通过status和errors字段驱动 UI 可访问性ARIA与交互逻辑next_enabled控制按钮禁用态避免无效提交。预判式校验触发点邮政编码输入完成时异步校验区域有效性邮箱失焦瞬间触发格式域名可达性双层验证支付方式变更后动态加载对应风控策略元数据进度状态对照表语义状态视觉反馈辅助技术播报pending淡蓝脉冲环正在验证收货地址error_prevented红色高亮图标邮编格式错误请修正后继续4.4 搜索建议面板的样式隔离与键盘导航增强Shadow DOM 隔离样式使用 Shadow DOM 实现样式封装避免全局 CSS 泄漏const shadow inputEl.attachShadow({ mode: closed }); shadow.innerHTML ;该方式确保建议列表的样式不污染宿主文档且无法被外部 CSS 选择器穿透。键盘导航逻辑↑/↓ 键移动焦点至相邻建议项Enter 键确认选中项并填充输入框Escape 键关闭面板并保留当前输入焦点管理对照表按键行为焦点目标ArrowDown下移高亮下一个liHome跳至首项第一个li第五章总结与展望云原生可观测性演进路径现代微服务架构下OpenTelemetry 已成为统一指标、日志与追踪采集的事实标准。某金融客户将 Spring Boot 应用接入 OTel Collector 后告警平均响应时间从 8.2 分钟降至 47 秒。关键实践代码片段// 初始化 OTel SDKGo 实现 sdk, err : otel.NewSDK( otel.WithResource(resource.MustNewSchema1( semconv.ServiceNameKey.String(payment-service), semconv.ServiceVersionKey.String(v2.3.1), )), otel.WithSpanProcessor(bsp), // 批处理导出器 otel.WithMetricReader(metricReader), ) if err ! nil { log.Fatal(err) // 生产环境应使用结构化错误处理 }主流后端兼容性对比后端系统Trace 支持Metric 类型支持采样策略可配置性Jaeger✅ 全链路❌ 仅基础计数器✅ 动态率自定义规则Prometheus Grafana❌ 不支持✅ Gauge/Counter/Histogram❌ 静态抓取间隔落地挑战与应对方案多语言 SDK 版本碎片化 → 建立内部 SDK 代理层统一注入语义约定高基数标签导致存储爆炸 → 在 Collector 中启用属性过滤与聚合压缩如 attributes.excludeKubernetes 环境中 sidecar 资源争抢 → 改用 DaemonSet 模式部署 OTel Collector并绑定 CPU 亲和性→ 数据流Instrumentation → OTel SDK → CollectorFilter/Transform→ ExporterZipkin/Prometheus/OTLP→ StorageTempo/Mimir/ClickHouse

相关文章:

Lovable主题定制深度教程:不改一行PHP代码,实现品牌专属UI/UX升级(仅限当前版本v4.8.3私有补丁包)

更多请点击: https://codechina.net 第一章:Lovable主题定制深度教程:不改一行PHP代码,实现品牌专属UI/UX升级(仅限当前版本v4.8.3私有补丁包) Lovable v4.8.3 通过其增强型 CSS 变量体系与声明式主题注入…...

Unity UGUI Mask与3D对象Stencil裁剪失效的根因解析

1. 这不是“Stencil失效”,而是 Unity 渲染管线里一场被忽略的层级静默冲突 你有没有试过在 UGUI ScrollView 里放一个带 Mask 的滚动区域,再把一个 3D 模型(比如一个带透明材质的粒子特效、或者一个半透的 UI 面板)叠在它上面&am…...

ElevenLabs广西话语音定制全链路指南(含南宁/柳州/玉林三方言音色对比数据)

更多请点击: https://codechina.net 第一章:ElevenLabs广西话语音定制的背景与技术定位 随着语音合成技术从通用语种向方言及小众语言纵深演进,区域性语音能力成为人机交互本地化落地的关键瓶颈。广西话(以南宁白话为代表&#x…...

Unity Stencil属性丢失根因与Property ID注册机制解析

1. 这个报错不是材质丢了,是Unity在“认人”时看错了身份证你在Unity编辑器里猛敲CtrlS保存场景,突然控制台炸出一行红字:Material xxx doesnt have _Stencil property。你第一反应可能是——“我明明在Shader里写了_Stencil,也加…...

Unity URP中_Material Stencil属性报错的四层根因与修复

1. 这个报错不是材质没写对,而是渲染管线在“敲门问权限” 刚在Unity 2021.3 LTS项目里切完URP(Universal Render Pipeline)后打包iOS,突然弹出一行红字: Material xxx doesnt have _Stencil property 。我第一反应是…...

数据结构 —— 链表

在数据结构体系中,顺序表与链表是两大最基础的线性存储结构。顺序表依靠连续内存实现随机访问,但插入、删除中间元素效率低下;而链表用离散内存 指针连接的方式,完美解决了顺序表的痛点,是 Linux 内核、操作系统、网络…...

讲讲IO复用三个函数的底层逻辑

在 Linux 网络编程中,IO 复用是高并发服务的核心基石。我们熟知的 Nginx、Redis、日志服务、后端网关,全部都是基于 IO 复用实现高并发。很多同学只会用 select / poll / epoll 这三个函数,但完全不懂内核底层到底发生了什么,遇到…...

2026亲测:专业降AI率工具选这款就对了3秒改写无痕迹

2026 年降 AIGC 工具已从“基础语义替换”进化为多维度智能优化系统,核心评估指标涵盖 AI 痕迹清除效率、专业表达准确性、格式结构完整性、长段落逻辑稳定性、内容重合度降低效果及高校检测平台兼容性。本次测评深入分析 5 款主流工具,测试范围包括中英…...

2026这6款宝藏降AIGC平台大起底,一键把AI检测率精准控到安全区!

步入 2026 年,学术圈的风向早已不是过去那个简单的“降重”时代。随着 AI 技术的迅猛发展,论文查重系统不断升级,高校对 AI 生成内容的审查标准也愈发严苛。曾经只需关注重复率的你,现在却要面对更复杂、更隐蔽的 AIGC 检测压力。…...

效率直接起飞 2026 最新!降AIGC工具测评与推荐

2026年真正好用的AI论文降重与改写工具,核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...

如何快速掌握ElegantBook:面向初学者的LaTeX书籍排版终极指南

如何快速掌握ElegantBook:面向初学者的LaTeX书籍排版终极指南 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook ElegantBook是一款专为学术书籍排版设计的优雅LaTeX模板&#xff0c…...

从CRUD到AI:普通程序员转型大模型应用开发指南(收藏版)

本文针对有3-5年Java、前端或PHP开发经验的程序员,探讨了如何转型AI大模型应用开发。文章指出,虽然表面看起来与现有工作不同,但CRUD经验反而是转型优势,如API调用、业务流程理解、数据库知识和调试能力等。转型只需掌握Python基础…...

通信对抗新利器:HWG1在铁路高速领域的卓越应用

在现代化交通体系中,铁路、高速等关键领域的通信安全至关重要。为了应对复杂多变的电磁环境,确保通信系统的稳定运行,成都鼎讯信通科技有限公司推出了通信信号干扰模拟器HWG1,为交通领域的通信对抗训练提供了强有力的支持。HWG1通…...

2026 年 AI 毕业论文工具横评:okbiye 领衔,9 款工具实测对比,帮你避开 90% 的写作坑

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 一、前言:AI 写论文,别只盯着 “一键生成” 毕业论文写作,是每个大学生都绕不开的关卡。从选题定方向、…...

taotoken多模型聚合平台为matlab开发者提供稳定ai能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 taotoken多模型聚合平台为matlab开发者提供稳定ai能力 对于使用MATLAB进行数据分析、仿真建模或算法开发的工程师和研究人员而言&a…...

Unity接入海康UMP流全流程:签名认证、HTTP长连接与自定义渲染

1. 这不是简单的“拉流”,而是一场跨协议、跨权限、跨引擎的精准对接你有没有试过在Unity里直接填一个RTSP地址,比如rtsp://admin:123456192.168.1.64:554/Streaming/Channels/101,然后点播放——结果黑屏、报错、卡死,或者更糟&a…...

LNK2001 无法解析的外部符号 “public: static struct QMetaObject const UIDPrintPage::staticMetaObject“

排查一早上的问题,不知道设置哪里出了这个问题,突然提示无法生成Qt的元对象moc_对应的文件,所以这里查找问题根源,语法错误还是路径设置等问题。最终定位还是文件属性设置有问题,估计是改了那些设置吧,最终…...

VIVE Focus3 Unity开发避坑指南:JDK11.0.22与Wave SDK 4.2集成要点

1. 这不是SDK安装教程,而是新手在Focus3上摔的前七跤Unity新手刚拿到VIVE Focus3设备,满心欢喜点开VIVE Developer Portal下载SDK 4.2,解压、导入、Build、Run——然后卡在黑屏、报错、手势没反应、手柄漂移、甚至Unity编辑器直接崩溃。我带过…...

VIVE Focus3 Unity开发避坑指南:SDK 4.2与XR插件深度适配

1. 这不是SDK安装,而是给Unity项目“接上神经末梢” 刚拿到VIVE Focus3设备时,我把它连上电脑,打开Unity 2021.3.33f1(LTS版),照着官网文档点开Package Manager——结果卡在“Loading...”三分钟&#xff0…...

Unity AI工作流实战指南:从Editor到运行时的稳定集成

1. 这不是“AI插件合集”,而是Unity开发者真正用得上的智能工作流Unity开发者每天面对的,从来不是“要不要用AI”,而是“哪个AI功能能让我今天少改三遍材质球、少跑两次Build、少被美术追着问‘这个Shader为什么在iOS上黑一块’”。我做Unity…...

非科班本科,3年从零基础到AI工程师,我的真实转行之路(附避坑指南)

大家好,我是一名普通的非科班本科生,专业是机械制造及自动化,如今已经在AI行业深耕3年,成为了一名能独当一面的AI工程师,还参与过OpenClaw、DeerFlow等国际开源项目,算是真正从“AI小白”逆袭成了行业从业者。 写这篇文章,不是为了炫耀,而是因为我太懂那种“想转行AI却…...

Unity构建性能分析工具:四层数据采集与包体优化实战

1. 这不是又一个“构建日志查看器”,而是一把能切开Unity构建黑箱的手术刀 我第一次在客户项目里看到Build Report Tool时,它正安静地躺在一个被遗忘的Plugins文件夹里,名字叫 BuildReportTool_v2.3.1.unitypackage 。当时团队正为一个中型…...

FRED的光路和光路历史记录

对于杂散光分析,通常会使用“高级光线追迹”对话框,并选择“创建/使用光线历史文件”和“确定光路”选项。下面是对这两个选项的简要解释。确定光线路径选择此选项会使得FRED存储所有光路信息。这允许用户之后使用诊断工具,如光路追迹路径报告…...

cPanel认证安全机制与真实漏洞识别指南

我不能按照您的要求生成关于“CVE-2026-41940 cPanel认证绕过漏洞”的博文内容。 原因如下: 该CVE编号为虚构编号 : CVE编号遵循严格规则,由MITRE官方或授权CNAs(CVE Numbering Authorities)分配。截至2024年7月&a…...

用 jose 正确实现 JWT 签发、验签与密钥轮换

1. 为什么你写的 JWT 总是“看起来能用,上线就出事”JWT(JSON Web Token)这东西,我第一次在项目里用的时候,也是照着文档抄了三行代码:jwt.sign(payload, secret)、jwt.verify(token, secret)、res.json({ …...

Playwright Python3.7+安装失败根因与一次成功配置指南

1. 为什么Playwright在Python3.7环境下总“装不上”?——这不是你的pip问题,是环境认知偏差 你刚在新配的Mac M2上敲下 pip install playwright ,终端卡在 Building wheel for playwright... 十分钟不动;或者Windows上反复提示…...

LLM、Agent与Multi-Agent全面对比:优势、劣势与应用场景分析

引言大语言模型(Large Language Model,LLM)的出现,让机器具备了前所未有的语言理解和生成能力。然而,单纯的LLM就像一个博学但困在图书馆里的学者——它能回答问题、撰写文章,却无法主动采取行动。于是&…...

Appium环境搭建:Java/Node.js/ADB/Xcode可信三角验证指南

1. 为什么“Appium环境搭建”不是配置清单,而是项目生死线 很多人把Appium环境搭建当成一个“照着文档敲几行命令”的入门动作,甚至觉得“不就是装个Java、Android SDK、Node.js,再下个Appium Desktop点开就行?”——我去年带三个…...

Firefox渗透测试插件工作流:15款高价值安全工具实战指南

1. 这不是普通浏览器插件推荐,而是一套可落地的渗透测试辅助工作流 “火狐插件”四个字在安全从业者耳中,常被默认为“轻量级、临时性、辅助性”的代名词——很多人装完Hackbar就以为自己有了渗透入口,点开FoxyProxy调个代理就当完成了环境隔…...

火狐渗透插件实战指南:15款专业工具高效赋能Web侦察与漏洞验证

1. 这不是普通浏览器插件合集,而是渗透测试人员的“外挂式侦察兵” 很多人第一次看到“火狐插件做渗透测试”这个说法,第一反应是:浏览器插件能干啥?改个User-Agent?抓个Cookie?顶多算个辅助小工具。我2016…...