diff --git a/src/styles/globals.css b/src/styles/globals.css index 21c2211..669a437 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,4 +1,7 @@ +/* 全局样式入口:主题映射、基础元素、全局命名页面/演示布局及响应式覆盖。当前 CSS Modules 与这些规则并存,后置同名选择器仍会覆盖前文;阅读时要同时检查选择器优先级与媒体条件。本文件只描述呈现,不拥有画布模型或业务状态。 */ +/* 引入 Tailwind 的基础与工具样式;本文件后续规则继续参与层叠,不按组件自动隔离。 */ @import "tailwindcss"; +/* 把语义颜色/圆角暴露给 Tailwind 工具类;背景/前景/主色引用下方运行时 CSS 变量。 */ @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); @@ -19,18 +22,22 @@ --radius-md: 6px; --radius-lg: 10px; } +/* 应用默认暖色主题值;这里不是按 workspace 存储的用户配置。 */ :root { --background: #fffcf9; --foreground: #38281f; --primary: #78523f; } +/* 所有元素默认 border-box,让声明宽高包含 padding 与 border。 */ * { box-sizing: border-box; } +/* 锚点滚动采用平滑动画并预留顶部 90px;减少动态效果查询在后部关闭平滑滚动。 */ html { scroll-behavior: smooth; scroll-padding-top: 90px; } +/* 设置页面默认字体、字号、底色和抗锯齿;局部组件可另行覆盖。 */ body { margin: 0; color: var(--foreground); @@ -39,12 +46,14 @@ body { font-size: 14px; -webkit-font-smoothing: antialiased; } +/* 常见交互元素采用 manipulation;具体画布手势仍在局部样式/处理器内禁用默认行为。 */ button, a, input, textarea { touch-action: manipulation; } +/* 按钮和链接默认对背景、颜色及 transform 做 0.2s 过渡。 */ button, a { transition: @@ -52,20 +61,24 @@ a { color 0.2s, transform 0.2s; } +/* 普通按钮用 pointer;默认 disabled 为 wait,局部不可用按钮可覆盖成 not-allowed。 */ button { cursor: pointer; } button:disabled { cursor: wait; } +/* 清除链接默认下划线,后面按用途为部分文字按钮重新加下划线。 */ a { text-decoration: none; } +/* 键盘可见焦点统一外描边;输入框单独使用边色和淡阴影表达聚焦。 */ button:focus-visible, a:focus-visible { outline: 2px solid #a47764; outline-offset: 4px; } +/* 清除输入默认 outline,下面的 focus 规则改用自定义边框/阴影。 */ input, textarea { outline: none; @@ -75,6 +88,7 @@ textarea:focus { border-color: #78523f !important; box-shadow: 0 0 0 3px #78523f12; } +/* 标题、正文和 figure 清除默认 margin,段落间距由各页面规则提供。 */ h1, h2, h3, @@ -82,17 +96,21 @@ p, figure { margin: 0; } +/* 图片默认不超过父容器宽度且保持内容比例;头像等局部场景可改 object-fit。 */ img { max-width: 100%; object-fit: contain; } +/* 按钮中的 SVG 不随 flex 收缩,避免控件挤压导致图标变窄。 */ button svg { flex-shrink: 0; } +/* 正文居中并限制为 1248px,桌面两侧至少留总计 112px;断点规则另行缩小边距。 */ .container { width: min(1248px, calc(100% - 112px)); margin: auto; } +/* 全局品牌行保持图标/名称/副标横排不换行,图标不压缩。 */ .brand { display: inline-flex; align-items: center; @@ -110,12 +128,14 @@ button svg { margin-left: 3px; letter-spacing: -0.2px; } +/* 深色背景上的品牌使用浅文字,并提高图片亮度。 */ .brand-light { color: #fff9f4; } .brand-light img { filter: brightness(1.6); } +/* 章节引题采用小字号和较大字距;登录/工作区等局部规则会覆盖颜色与字号。 */ .eyebrow { font-size: 10px; line-height: 1.7; @@ -123,6 +143,7 @@ button svg { font-weight: 500; color: #8b7667; } +/* 导航的初始 flex 布局和背景;文件末尾同名规则将 display 改为 grid。 */ .site-nav { height: 88px; display: flex; @@ -133,6 +154,7 @@ button svg { background: #fff9f2; gap: 26px; } +/* 导航链接横排、悬停加深颜色;最终水平对齐还受末尾 justify-content:center 影响。 */ .site-nav nav { display: flex; gap: 32px; @@ -142,6 +164,7 @@ button svg { .site-nav nav a:hover { color: #38281f; } +/* 导航右侧动作横排并禁止标签/链接换行;末尾为 grid 布局补充 justify-self。 */ .nav-actions { display: flex; align-items: center; @@ -152,10 +175,12 @@ button svg { .nav-actions a { white-space: nowrap; } +/* 全局命名的 landing 表面裁剪溢出,以下 hero/preview 等样式与局部 LandingPage CSS Module 分开。 */ .landing { overflow: hidden; background: #fff9f2; } +/* 旧首屏标题容器提供定位参照和顶部留白,文案与操作区由后续规则排版。 */ .hero { position: relative; padding-top: 90px; @@ -165,6 +190,7 @@ button svg { align-items: center; gap: 8px; } +/* 引题中的圆点只提供状态装饰,业务状态不能由颜色规则推断。 */ .status-dot { height: 6px; width: 6px; @@ -172,6 +198,7 @@ button svg { border-radius: 50%; background: #9e805f; } +/* 初始标题使用 clamp 限制大小;后置同名规则补充 fit-content 宽度。 */ .hero h1 { font-size: clamp(42px, 4.5vw, 66px); font-weight: 650; @@ -181,9 +208,11 @@ button svg { position: relative; display: inline-block; } +/* 标题强调文字初始颜色;最终装饰改由末尾 span 伪元素提供。 */ .hero h1 span { color: #916e55; } +/* 旧装饰线的位置与尺寸,末尾最终会隐藏此元素,改绘 span:after。 */ .hero-stroke { position: absolute; bottom: -1px; @@ -193,12 +222,14 @@ button svg { color: #bca381; transform: rotate(-3deg); } +/* 首屏说明文字用较宽行高与弱色,和标题拉开距离。 */ .hero-copy { color: #847264; font-size: 14px; line-height: 1.9; margin-top: 23px; } +/* 主动作与文字链接横排;首个主链接/按钮设置相同最小宽度。 */ .hero-actions { display: flex; align-items: center; @@ -208,6 +239,7 @@ button svg { .hero-actions > a { font-size: 12px; } +/* 文字链接和箭头并排,悬停只改变文字颜色。 */ .text-link { display: inline-flex; align-items: center; @@ -222,6 +254,7 @@ button svg { .hero-actions > a:first-child { min-width: 155px; } +/* 人物展示用五列等宽网格,第二/第四项略错位,图注居中且默认不换行。 */ .people-row { display: grid; grid-template-columns: repeat(5, 1fr); @@ -260,6 +293,7 @@ button svg { color: #b8a595; font-family: monospace; } +/* 首屏底注用细上边线分隔,两端文字左右对齐。 */ .hero-footnote { display: flex; justify-content: space-between; @@ -270,6 +304,7 @@ button svg { letter-spacing: 1.3px; color: #9a8776; } +/* 产品空间章节采用浅色表面和上下留白;标题区将标题/说明分置两端。 */ .space-section { padding: 110px 0; background: #fffdf9; @@ -288,6 +323,7 @@ button svg { color: #8a786b; margin-bottom: 5px; } +/* 全局二级标题默认字号/字距;各页面和窄屏查询按更具体规则覆盖。 */ h2 { font-size: 38px; line-height: 1.55; @@ -297,6 +333,7 @@ h2 { .section-heading h2 { margin-top: 18px; } +/* 展示预览采用 205px 侧栏加弹性画布,两列共高 550px 并裁剪内部装饰。 */ .product-preview { border: 1px solid #dfd8ce; box-shadow: 0 20px 70px #5d453013; @@ -307,6 +344,7 @@ h2 { height: 550px; background: #faf9f6; } +/* 展示侧栏内部缩小品牌/文字,底注固定到底部,active 行用独立底色。 */ .preview-sidebar { position: relative; background: #f3f0e9; @@ -345,6 +383,7 @@ h2 { font-size: 9px; color: #a79786; } +/* 展示画布以径向渐变平铺点阵,为便签、图稿和工具条提供相对定位。 */ .preview-canvas { position: relative; overflow: hidden; @@ -352,6 +391,7 @@ h2 { background-image: radial-gradient(#c8beb0 0.65px, transparent 0.65px); background-size: 18px 18px; } +/* 预览顶部信息栏,span 浮到右侧。 */ .preview-bar { height: 45px; background: #fffdf9e6; @@ -362,6 +402,7 @@ h2 { .preview-bar span { float: right; } +/* 纸张预览绝对定位、轻微旋转,以 z-index:2 盖在线条上;内部使用衬线标题。 */ .preview-note { position: absolute; left: 8%; @@ -391,6 +432,7 @@ h2 { line-height: 1.9; color: #a08873; } +/* 艺术预览另一方向旋转,独立设置图形/标题尺寸。 */ .preview-art { position: absolute; left: 48%; @@ -412,6 +454,7 @@ h2 { display: block; margin-top: 13px; } +/* 共享灯光插画由椭圆径向渐变和拱形圆角绘制,并非实际图片资源。 */ .light-shape { background: radial-gradient( ellipse at 44% 70%, @@ -422,6 +465,7 @@ h2 { ); border-radius: 150px 150px 5px 5px; } +/* 便签固定相对画布比例位置,右下大型 span 作为装饰。 */ .preview-sticky { position: absolute; left: 52%; @@ -441,6 +485,7 @@ h2 { font-size: 40px; color: #9e9e75; } +/* 展示工具条层级高于卡片;下方连接 SVG 覆盖画布但不截获指针。 */ .preview-tools { position: absolute; bottom: 18px; @@ -460,6 +505,7 @@ h2 { height: 100%; pointer-events: none; } +/* 工具章节提供上下留白,两列工具卡片共用边框和元信息排版。 */ .tools-section { padding-top: 110px; padding-bottom: 110px; @@ -499,6 +545,7 @@ h2 { .tool-card .text-link { margin-top: 22px; } +/* 两种工具插画共用固定高度与裁剪容器,各自再定义内容。 */ .type-art, .canvas-art { height: 285px; @@ -506,6 +553,7 @@ h2 { position: relative; overflow: hidden; } +/* 排版工具插画使用大字与绝对定位装饰字形,形成层叠字样。 */ .type-art { background: #eae8d2; padding: 22px 35px; @@ -533,6 +581,7 @@ h2 { font-weight: 400; transform: rotate(10deg); } +/* 画布工具插画使用点阵底和旋转便签;第二便签靠右,装饰字符另行定位。 */ .canvas-art { background-color: #f3eee8; background-image: radial-gradient(#c5b9a9 1px, transparent 1px); @@ -574,6 +623,7 @@ h2 { font-weight: 400; font-family: "Songti SC", serif; } +/* 灵感章节用独立底色/上下边线,三列图文按统一图片高度排列。 */ .ideas-section { padding: 100px 0; background: #f1eadd; @@ -605,6 +655,7 @@ h2 { color: #887767; max-width: 290px; } +/* 工作流初始两列布局,右侧有序列表移除默认编号,由子 span 自行呈现步骤号。 */ .workflow { padding-top: 120px; padding-bottom: 120px; @@ -643,6 +694,7 @@ h2 { font-size: 17px; margin-bottom: 8px; } +/* FAQ 限制内容宽度,问题按钮横跨整行,答案留出底部间距。 */ .faq { max-width: 800px; padding-bottom: 110px; @@ -675,6 +727,7 @@ h2 { padding-bottom: 25px; max-width: 640px; } +/* 结尾 CTA 区域裁剪右侧大型装饰星,星形 pointer-events:none 避免遮挡动作。 */ .closing { position: relative; padding: 90px max(56px, calc((100% - 1248px) / 2)); @@ -701,6 +754,7 @@ h2 { transform: rotate(12deg); pointer-events: none; } +/* 页脚品牌、说明和链接横排,正文 flex:1 占据余量;窄屏逐步隐藏次要信息。 */ .site-footer { display: flex; align-items: center; @@ -733,11 +787,13 @@ h2 { color: #b2a18f; font-size: 9px; } +/* 登录页桌面分成 46% 品牌故事与 54% 表单;800px 以下隐藏故事并转为单区。 */ .auth-page { display: grid; grid-template-columns: 46% 54%; min-height: 100dvh; } +/* 品牌故事用深渐变和最小高度,为拼贴与底部注记留出空间。 */ .auth-story { min-height: 850px; position: relative; @@ -753,6 +809,7 @@ h2 { letter-spacing: 1px; color: #c2b6ae; } +/* 故事文案与上方品牌拉开距离,浅色正文适配深背景。 */ .auth-story-copy { margin-top: 105px; } @@ -772,12 +829,14 @@ h2 { font-size: 13px; line-height: 1.9; } +/* 拼贴采用相对容器,便签/图稿绝对定位并带相反旋转角。 */ .auth-collage { height: 300px; position: relative; margin-top: 40px; max-width: 500px; } +/* 拼贴卡片共用尺寸、圆角和投影,后面的 auth-art 覆盖高度与配色。 */ .auth-note, .auth-art { position: absolute; @@ -787,6 +846,7 @@ h2 { padding: 25px; box-shadow: 0 20px 30px #140c0726; } +/* 便签偏左下,深底浅边;图稿位于右上,用共享 light-shape 装饰。 */ .auth-note { left: 0; top: 18px; @@ -810,6 +870,7 @@ h2 { font-size: 10px; color: #bcada2; } +/* 右侧图稿旋转并使用浅纸色,内部插画和标题单独排版。 */ .auth-art { left: 46%; top: 0; @@ -834,6 +895,7 @@ h2 { color: #8f7a6b; margin-top: 8px; } +/* 椭圆轨道绝对铺在拼贴区域,caption 居中;故事 footer 固定在故事列底部。 */ .auth-orbit { position: absolute; inset: 0 20px; @@ -856,6 +918,7 @@ h2 { font-size: 9px; color: #ae9d90; } +/* 表单列 flex 居中,返回链接绝对放在右上;表单容器限制最大宽度。 */ .auth-main { position: relative; display: flex; @@ -894,6 +957,7 @@ h2 { font-size: 12px; color: #8e7a69; } +/* 登录/注册页签平分行宽,aria-selected 决定当前白底和字体强调。 */ .auth-tabs { background: #f1e8df; border: 1px solid #e5d6c8; @@ -922,12 +986,14 @@ h2 { .auth-form-wrap form { text-align: left; } +/* 这是全局 form label 规则,会作用于匹配的其它表单;局部模块可按层叠覆盖。 */ form label { font-size: 12px; display: block; margin-bottom: 9px; color: #635044; } +/* 认证输入和对话框输入共用高度/边框;占位色与表单直系输入间距另行定义。 */ .auth-form-wrap input, .dialog-input { height: 46px; @@ -946,6 +1012,7 @@ form label { .auth-form-wrap form > input { margin-bottom: 21px; } +/* 密码输入右侧留出空间,显示切换按钮绝对放在输入内侧。 */ .password-field { position: relative; } @@ -959,11 +1026,13 @@ form label { color: #8c7867; line-height: 0; } +/* 提交按钮占满表单宽,46px 高度用 important 保证不被普通工具类改小。 */ .auth-submit { width: 100%; margin-top: 26px; height: 46px !important; } +/* 社交登录分隔线中间文字用同表面背景盖住边线。 */ .auth-divider { position: relative; margin: 28px 0 23px; @@ -977,6 +1046,7 @@ form label { color: #ae9a86; background: #fffcf9; } +/* 社交按钮等分宽度;Google/Slack 字形标记仅是外观,授权行为由组件处理。 */ .social-buttons { display: flex; gap: 12px; @@ -995,6 +1065,7 @@ form label { font-family: Arial; color: #7c586e; } +/* 表单说明和 demo 链接使用更小字号,和主动作区分。 */ .auth-form-wrap > .auth-notice { font-size: 10px; line-height: 1.9; @@ -1009,6 +1080,7 @@ form label { align-items: center; margin-top: 22px; } +/* 错误/成功共用提示尺寸,随后分别用暖红和浅绿配色表达结果。 */ .form-error, .form-success { font-size: 12px; @@ -1025,12 +1097,14 @@ form label { background: #eaf0e1; color: #557042; } +/* 全局 dashboard 壳体与 CSS Module workspace 壳体并存;以下 icon-rail/workspace-* 是全局命名布局。 */ .dashboard { display: flex; min-height: 100dvh; background: #fffefb; color: #38322c; } +/* 左侧图标轨固定 48px 并高于侧栏,底部动作通过 auto margin 贴底。 */ .icon-rail { width: 48px; position: fixed; @@ -1045,6 +1119,7 @@ form label { padding: 17px 4px; z-index: 30; } +/* 图标轨导航纵排,hover/active 背景与底色区分。 */ .rail-nav { display: flex; flex-direction: column; @@ -1070,10 +1145,12 @@ form label { flex-direction: column; gap: 7px; } +/* 共享 UI 图片不被 flex 挤压,并以 contain 保持完整图形。 */ .ui-icon { flex-shrink: 0; object-fit: contain; } +/* 全局侧栏固定在 48px 图标轨右侧,宽 235px;主内容初始偏移为两者之和 283px。 */ .workspace-sidebar { width: 235px; position: fixed; @@ -1085,6 +1162,7 @@ form label { padding: 0 14px; z-index: 25; } +/* 工作区切换器提供下拉菜单定位参照,长名称允许省略。 */ .workspace-switch { position: relative; border-bottom: 1px solid #e9e4dd; @@ -1105,6 +1183,7 @@ form label { text-overflow: ellipsis; white-space: nowrap; } +/* 工作区首字头像居中;下拉菜单绝对定位在切换按钮下方并提高层级。 */ .workspace-avatar { background: #e9e6cc; width: 27px; @@ -1114,6 +1193,7 @@ form label { place-items: center; font-size: 16px; } +/* 切换菜单内部按钮整行横排,悬停浅底,是否打开由组件决定。 */ .workspace-menu { position: absolute; top: 60px; @@ -1140,6 +1220,7 @@ form label { .workspace-menu button:hover { background: #f3eae0; } +/* 用户身份行中间文字占剩余空间,小头像兼容首字占位。 */ .profile-row { display: flex; align-items: center; @@ -1162,6 +1243,7 @@ form label { font-size: 10px; color: #78523f; } +/* 目录分组小标题与带附加操作的 flex 标题共用基准间距。 */ .sidebar-label { font-size: 9px; color: #a19588; @@ -1174,6 +1256,7 @@ form label { align-items: center; margin-top: 30px; } +/* 侧栏项目整行显示,图标不收缩;hover 与 selected 背景分别表达经过与当前项。 */ .side-item { display: flex; align-items: center; @@ -1200,9 +1283,11 @@ form label { background: #eee7df; color: #78523f; } +/* 全局弱文字辅助类,只改变颜色。 */ .muted { color: #a49788; } +/* 侧栏底部介绍绝对锚定,含边线、品牌与 demo 徽标,不参与目录流布局。 */ .sidebar-bottom { position: absolute; bottom: 21px; @@ -1232,6 +1317,7 @@ form label { .sidebar-bottom .brand small { font-size: 9px; } +/* 小字号描边徽标仅提供演示标记外观。 */ .demo-badge { font-size: 8px; color: #a58f79; @@ -1239,16 +1325,19 @@ form label { padding: 2px 4px; border-radius: 3px; } +/* 主区预留图标轨与侧栏宽度;无侧栏分支随后仅保留 48px 图标轨。 */ .workspace-main { margin-left: 283px; width: calc(100% - 283px); min-height: 100dvh; flex: 1; } +/* 根据实际 DOM 是否存在全局侧栏选择主区偏移,不能仅从业务开关推断此选择器已匹配。 */ .dashboard:not(:has(.workspace-sidebar)) .workspace-main { margin-left: 48px; width: calc(100% - 48px); } +/* 全局主区头部高 63px,右侧动作组通过 margin-left:auto 靠右。 */ .workspace-header { height: 63px; border-bottom: 1px solid #eee9e2; @@ -1259,6 +1348,7 @@ form label { font-size: 10px; color: #8f8173; } +/* 全局小按钮为 28px;与组件模块中的 IconButton 共享尺寸机制不同。 */ .icon-button { display: grid; place-items: center; @@ -1270,6 +1360,7 @@ form label { .icon-button:hover { background: #f1ebe3; } +/* 面包屑分隔用弱色,demo 标签另设小字号。 */ .breadcrumb { color: #d2c7b8; } @@ -1283,11 +1374,13 @@ form label { font-size: 9px; color: #a79783; } +/* 主内容居中并限宽,欢迎文案、快捷创建和图谱网格在内部顺序排布。 */ .workspace-content { max-width: 1190px; padding: 56px 64px; margin: auto; } +/* 欢迎区为装饰星提供定位参照,标题与说明使用不同字号/颜色。 */ .welcome-top { position: relative; } @@ -1315,6 +1408,7 @@ form label { transform: rotate(10deg); font-weight: 300; } +/* 两列快捷创建按钮包含图标、文字与靠右箭头,hover 上移并强调边框。 */ .quick-create { display: grid; grid-template-columns: 1fr 1fr; @@ -1336,6 +1430,7 @@ form label { transform: translateY(-2px); box-shadow: 0 5px 12px #4f301505; } +/* 快捷创建图标底块固定尺寸,peach/olive 只提供底色。 */ .quick-icon { width: 47px; height: 47px; @@ -1362,6 +1457,7 @@ form label { margin-left: auto; color: #ad9985; } +/* 文件标题和筛选动作横排;搜索输入透明无边框,宽度在响应式中逐步收缩/隐藏。 */ .files-heading { display: flex; align-items: center; @@ -1393,6 +1489,7 @@ form label { .board-search input::placeholder { color: #baa995; } +/* 文件筛选页签用底部边线,active 只在当前按钮显示主色下划线。 */ .file-tabs { display: flex; gap: 25px; @@ -1409,6 +1506,7 @@ form label { border-color: #78523f; color: #78523f; } +/* 图谱卡片桌面三列,断点后两列/一列;卡片 hover 上移并加阴影。 */ .board-grid { display: grid; grid-template-columns: repeat(3, 1fr); @@ -1428,11 +1526,13 @@ form label { transform: translateY(-4px); box-shadow: 0 9px 24px #49301912; } +/* 封面固定高度并裁剪装饰,cover-0/1/2 提供不同插画布局。 */ .board-cover { height: 190px; position: relative; overflow: hidden; } +/* 第一封面用浅纸底与灯光渐变;标题层级高于图形,底部小字独立定位。 */ .cover-0 { background: #f0e5da; padding: 20px; @@ -1458,6 +1558,7 @@ form label { letter-spacing: 1px; color: #a28c78; } +/* 第二封面用衬线大字,右下装饰字符可超出裁剪区域。 */ .cover-1 { background: #eae7d2; padding: 24px; @@ -1484,6 +1585,7 @@ form label { color: #c8c3a3; font-weight: 400; } +/* 第三封面用浅绿底、底部标题和相互重叠的圆圈。 */ .cover-2 { background: #e4e8e1; padding: 26px 21px; @@ -1507,6 +1609,7 @@ form label { margin-left: -25px; background: #c4d0be33; } +/* 卡片信息横排,中间文字容器 min-width:0 允许标题省略,不反向撑宽网格。 */ .board-card-info { display: flex; gap: 10px; @@ -1532,6 +1635,7 @@ form label { .board-card-info > svg { color: #b6a38f; } +/* 底部提示限制装饰图溢出,文字在普通流内,右侧插画绝对定位。 */ .workspace-tip { position: relative; border-top: 1px solid #e9e1d6; @@ -1562,6 +1666,7 @@ form label { top: 10px; opacity: 0.7; } +/* 空列表状态纵向居中,给创建动作留出独立间距。 */ .empty-state { display: flex; align-items: center; @@ -1583,6 +1688,7 @@ form label { .empty-state button { margin-top: 8px; } +/* 工作区错误横条让说明/操作分置两侧,提示层不代替业务错误状态。 */ .workspace-error { padding: 14px 25px; font-size: 12px; @@ -1592,10 +1698,12 @@ form label { justify-content: space-between; gap: 15px; } +/* 补充共享对话框输入的上下外边距,其尺寸/边框已在认证输入组合规则定义。 */ .dialog-input { margin-bottom: 23px; margin-top: 1px; } +/* 旧全局 toast 固定底部居中并限于 90vw;不要与 sonner 的通知状态存储混为一体。 */ .toast { position: fixed; bottom: 25px; @@ -1613,6 +1721,7 @@ form label { z-index: 100; max-width: 90vw; } +/* 页面加载态占满动态视口,以 grid 居中提示内容。 */ .loading-page { display: grid; align-content: center; @@ -1624,10 +1733,12 @@ form label { font-size: 12px; color: #a58d75; } +/* 全局命名的展示画布布局;以下固定舞台/示例纸张样式不表示 headless 文档、视口或几何模型。 */ .canvas-main { height: 100dvh; overflow: hidden; } +/* 展示视口扣掉 63px 顶栏高度,允许内部滚动并铺点阵背景。 */ .canvas-viewport { position: relative; overflow: auto; @@ -1636,6 +1747,7 @@ form label { background-image: radial-gradient(#cfc9bf 0.6px, transparent 0.6px); background-size: 18px 18px; } +/* 展示标题和缩放控制绝对浮在视口上方,与 CSS Module 工作区浮动条的定位规则分开。 */ .canvas-floating-title { position: absolute; left: 20px; @@ -1670,12 +1782,14 @@ form label { border-radius: 7px; padding: 5px 8px; } +/* 示例舞台固定为 1050×820,transform-origin 仅设置变换锚点;缩放量不在此声明。 */ .canvas-stage { position: relative; width: 1050px; height: 820px; transform-origin: 50% 40%; } +/* 示例纸张固定位置/宽高,内部用两列三行网格排文本、声音、插画、清单和色板。 */ .study-board { position: absolute; top: 145px; @@ -1690,6 +1804,7 @@ form label { grid-template-rows: 150px 230px 100px; gap: 24px 64px; } +/* 纸张标题放在上边框外,副信息使用小字距;正文与可编辑 textarea 共用排版。 */ .board-caption { position: absolute; left: 0; @@ -1713,6 +1828,7 @@ form label { line-height: 1.9; color: #54493f; } +/* 示例文本域背景透明,可纵向调整高度,最小高度 75px。 */ .study-text textarea { border: 1px solid transparent; resize: vertical; @@ -1722,6 +1838,7 @@ form label { background: transparent; outline: 0; } +/* 声音示例与插画示例各有底色与固定高度,插画复用 light-shape。 */ .study-sound { background: #ede9d0; padding: 18px; @@ -1745,6 +1862,7 @@ form label { width: 244px; margin-top: 20px; } +/* 清单 label 横排复选框/文字,accent-color 使用主色。 */ .study-checks { margin-top: -8px; } @@ -1759,6 +1877,7 @@ form label { .study-checks input { accent-color: #78523f; } +/* 色板标题和色块纵向排列,色块横排且固定尺寸。 */ .study-palette { padding-top: 8px; } @@ -1776,6 +1895,7 @@ form label { height: 34px; border-radius: 3px; } +/* 舞台外便签独立绝对定位,字号与脚注相对纸张内容缩小。 */ .loose-note { position: absolute; left: 20px; @@ -1799,6 +1919,7 @@ form label { font-size: 9px; color: #a39380; } +/* 旧展示工具栏固定在视口底部,额外向右偏移 100px 适配侧栏;窄屏断点调整该偏移。 */ .canvas-toolbar { position: fixed; bottom: 19px; @@ -1820,10 +1941,12 @@ form label { place-items: center; border-radius: 5px; } +/* 首按钮即使未 hover 也有底色,这条样式本身不读取 activeTool。 */ .canvas-toolbar > button:first-child, .canvas-toolbar > button:hover { background: #f2e8e1; } +/* 图层区域标题把操作图标推到最右,图层行只提供缩进和字号。 */ .layer-label { display: flex; align-items: center; @@ -1838,6 +1961,7 @@ form label { font-size: 11px; padding: 8px 12px; } +/* 展示用新建便签绝对定位,文本域可纵向伸展,删除按钮固定右上。 */ .new-canvas-node { position: absolute; left: 65px; @@ -1860,6 +1984,7 @@ form label { right: 5px; top: 5px; } +/* 全局演示深色效果用滤镜反转/色相旋转;后续图片/封面再次反转以补偿,并非完整主题 token 切换。 */ .dark-workspace { filter: invert(0.87) hue-rotate(180deg); } @@ -1868,13 +1993,16 @@ form label { .dark-workspace .light-shape { filter: invert(1) hue-rotate(180deg); } +/* 超宽屏增大主内容留白/封面高度,并调整登录故事的水平位置与拼贴间距。 */ @media (min-width: 1600px) { + /* 超宽屏增加工作区顶部留白和封面高度,不改变网格列数。 */ .workspace-content { padding-top: 75px; } .board-cover { height: 220px; } + /* 登录故事按最大内容宽度向内对齐,文案与拼贴增加上下距离。 */ .auth-story { padding-left: max(40px, calc((100vw - 1300px) / 2)); } @@ -1885,7 +2013,9 @@ form label { margin-top: 55px; } } +/* 1100px 以下压缩全局页面与登录拼贴;侧栏收为 215px,主区相应偏移 263px。 */ @media (max-width: 1100px) { + /* 中屏缩小页面左右留白,导航链接间距和品牌字号一起压缩。 */ .container { width: calc(100% - 72px); } @@ -1901,6 +2031,7 @@ form label { .brand small { font-size: 11px; } + /* 人物间距与图注缩小,隐藏图注编号,图片高度交回固有比例。 */ .people-row { gap: 20px; } @@ -1914,6 +2045,7 @@ form label { .people-row img { height: auto; } + /* 首屏留白和预览整体高度缩小;纸张/图稿 padding、字号与便签文字同步调整。 */ .hero { padding-top: 70px; } @@ -1937,6 +2069,7 @@ form label { .preview-sticky { font-size: 10px; } + /* 工具插画缩小大字,工作流列间距、页脚和结尾区留白也一并收紧。 */ .type-art { font-size: 54px; padding-left: 25px; @@ -1956,6 +2089,7 @@ form label { .closing { padding-left: 36px; } + /* 登录故事/拼贴改用更小卡片与内边距,右侧表单减小水平留白。 */ .auth-story { padding: 32px 28px; } @@ -1993,6 +2127,7 @@ form label { .auth-main { padding: 90px 38px; } + /* 全局工作区边距收紧,侧栏 215px 与主区 263px 偏移相配。 */ .workspace-content { padding: 43px 35px; } @@ -2003,6 +2138,7 @@ form label { margin-left: 263px; width: calc(100% - 263px); } + /* 图谱仍为三列,只缩小间隙、封面和文字,隐藏信息行中的次要图标。 */ .board-grid { gap: 14px; } @@ -2018,6 +2154,7 @@ form label { .board-card-info > .ui-icon { display: none; } + /* 快捷创建按钮减少 padding/图标尺寸,欢迎区装饰和搜索框也随之缩小。 */ .quick-create { gap: 12px; } @@ -2039,10 +2176,13 @@ form label { width: 100px; } } +/* 800px 以下隐藏导航链接和登录故事,章节标题改纵排、图谱网格改两列;全局侧栏收为 195px。 */ @media (max-width: 800px) { + /* 隐藏全局导航链接,保留品牌与操作;后置 grid 覆盖并不重新显示这些链接。 */ .site-nav nav { display: none; } + /* 首屏标题与人物图注进一步缩小,图注允许换行。 */ .hero h1 { font-size: 45px; letter-spacing: -2px; @@ -2058,6 +2198,7 @@ form label { font-size: 8px; white-space: normal; } + /* 章节标题/说明从横排改为纵排,减少区块上下距离。 */ .section-heading { align-items: flex-start; flex-direction: column; @@ -2074,6 +2215,7 @@ form label { .section-heading p { font-size: 12px; } + /* 预览侧栏压到 140px,隐藏副标/底注;画布卡片按百分比重新定位并缩小。 */ .product-preview { grid-template-columns: 140px 1fr; height: 420px; @@ -2129,6 +2271,7 @@ form label { bottom: 10px; padding: 10px 15px; } + /* 工具卡与插画缩小字号/间距,保留双列工具网格;下一断点才改单列。 */ .tools-section { padding-top: 70px; padding-bottom: 70px; @@ -2170,6 +2313,7 @@ form label { font-size: 20px; left: 12%; } + /* 灵感卡片和工作流压缩间距/字号,FAQ 与结尾区减少留白。 */ .ideas-section { padding: 65px 0; } @@ -2217,6 +2361,7 @@ form label { top: 30px; opacity: 0.6; } + /* 页脚允许换行,并隐藏非品牌的直系链接。 */ .site-footer { flex-wrap: wrap; gap: 17px; @@ -2227,6 +2372,7 @@ form label { .site-footer > a:not(.brand) { display: none; } + /* 移除登录故事列,auth-page 改 block,表单区独占至少一个动态视口高度。 */ .auth-story { display: none; } @@ -2247,6 +2393,7 @@ form label { .auth-form-wrap > h1 { font-size: 30px; } + /* 侧栏缩到 195px,主区偏移 243px;图谱改两列,快捷创建改一列。 */ .workspace-content { padding: 40px 25px; } @@ -2279,6 +2426,7 @@ form label { font-size: 50px; top: 13px; } + /* 隐藏头部 demo 标签与图谱搜索,筛选动作缩小,减少头部拥挤。 */ .header-right .demo-label { display: none; } @@ -2312,6 +2460,7 @@ form label { right: -25px; opacity: 0.35; } + /* 仅调整展示舞台的变换原点、缩放控件高度与工具条偏移,不改变业务画布坐标。 */ .canvas-stage { transform-origin: 20% 40%; } @@ -2322,7 +2471,9 @@ form label { left: calc(50% + 75px); } } +/* 560px 以下按单列内容收拢:人物仅留前三项,工具/灵感/工作流/图谱转单列,全局侧栏隐藏。 */ @media (max-width: 560px) { + /* 手机边距收为两侧 20px,导航缩高,品牌副标与第一个次要动作隐藏。 */ .container { width: calc(100% - 40px); } @@ -2353,6 +2504,7 @@ form label { height: 34px; padding: 0 12px; } + /* 首屏标题/引题/正文/按钮进一步缩小,人物网格改三列并隐藏第四项起的 figure。 */ .hero { padding-top: 55px; } @@ -2404,6 +2556,7 @@ form label { .people-row figure:nth-child(2) { padding-top: 6px; } + /* 首屏底注与章节引题缩小字距/字号;二级标题在本断点降到 28px。 */ .hero-footnote { font-size: 6px; letter-spacing: 0.8px; @@ -2428,6 +2581,7 @@ form label { .space-section { padding: 50px 0; } + /* 预览高度降为 330px、侧栏仅 85px,内部文字/卡片/工具条按手机比例缩小。 */ .product-preview { height: 330px; grid-template-columns: 85px 1fr; @@ -2503,6 +2657,7 @@ form label { padding: 8px 12px; border-radius: 5px; } + /* 工具网格改一列并恢复插画一定高度,正文移除最小高度,减少单列多余空白。 */ .tools-section { padding-top: 50px; padding-bottom: 50px; @@ -2539,6 +2694,7 @@ form label { font-size: 11px; margin-top: 18px; } + /* 灵感网格改一列,每项图片绝对靠左、文字留出 95px,形成紧凑图文行。 */ .ideas-section { padding: 50px 0; } @@ -2567,6 +2723,7 @@ form label { .idea-grid h3 { font-size: 15px; } + /* 工作流改一列,步骤和 FAQ/结尾区间距缩小。 */ .workflow { grid-template-columns: 1fr; gap: 20px; @@ -2614,6 +2771,7 @@ form label { .closing .inline-flex { font-size: 11px; } + /* 页脚品牌与说明减小字号,其余隐藏状态继续承接上个断点。 */ .site-footer { padding: 25px 20px; gap: 14px; @@ -2627,6 +2785,7 @@ form label { .site-footer p { font-size: 8px; } + /* 全局侧栏先隐藏,主区只保留 48px 图标轨;末尾 sidebar-only 例外会恢复侧栏显示。 */ .workspace-sidebar { display: none; } @@ -2641,6 +2800,7 @@ form label { .workspace-content { padding: 30px 18px; } + /* 头部减高到 55px,隐藏直系图标按钮;欢迎区和快捷创建缩小间距。 */ .workspace-header { padding: 0 12px; font-size: 8px; @@ -2701,6 +2861,7 @@ form label { margin-bottom: 18px; font-size: 9px; } + /* 图谱改单列并增大单卡封面,信息文字和先前隐藏的 ui-icon 恢复为手机卡片尺寸。 */ .board-grid { grid-template-columns: 1fr; gap: 18px; @@ -2744,6 +2905,7 @@ form label { .cover-small { font-size: 7px; } + /* 底部提示图/文字收紧,展示画布工具条重新计算偏移并缩小按钮。 */ .workspace-tip { margin-top: 30px; padding: 25px 0; @@ -2771,6 +2933,7 @@ form label { width: 16px !important; height: 16px !important; } + /* 展示舞台改左上变换原点,缩放条改左侧;视口扣除 55px 手机头部高度。 */ .canvas-stage { transform-origin: 0 0; } @@ -2785,6 +2948,7 @@ form label { .canvas-viewport { height: calc(100dvh - 55px); } + /* 旧 toast 使用小字与最小宽度,登录表单顶部留白也略作调整。 */ .toast { font-size: 10px; min-width: 200px; @@ -2797,6 +2961,7 @@ form label { font-size: 7px; } } +/* 全局减少动态效果:关闭平滑滚动,并以 important 关闭元素及伪元素的 animation/transition。 */ @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; @@ -2809,33 +2974,42 @@ form label { } } +/* 链接主色按钮使用浅文字;以下是位于媒体查询之后的后置覆盖,仍按选择器优先级与源码顺序参与层叠。 */ a.bg-primary { color: #fff9f4; } +/* 后置覆盖把导航改为 auto/1fr/auto 三列 grid;没有重置前面媒体查询的 padding/height。 */ .site-nav { display: grid; grid-template-columns: auto 1fr auto; } +/* 后置覆盖让导航链接在中间列居中;800px 查询中的 display:none 仍然保留。 */ .site-nav nav { justify-content: center; } +/* 标题宽度改 fit-content,为后面强调 span 装饰保持紧贴文字的布局。 */ .hero h1 { width: fit-content; } +/* 先调整旧装饰线锚点/比例;再下一条同名规则将其隐藏,因此这不是最终可见装饰。 */ .hero-stroke { right: 0; width: 30%; } +/* 配合后置 grid,动作区自身靠右对齐。 */ .nav-actions { justify-self: end; } +/* 最终隐藏旧 hero-stroke 元素;下方 span:after 代替它绘制装饰线。 */ .hero-stroke { display: none; } +/* 强调 span 成为伪元素定位参照。 */ .hero h1 span { position: relative; } +/* 在强调文字下方绘制旋转的圆角色条,content 为空不加入实际文案。 */ .hero h1 span:after { content: ""; position: absolute; @@ -2847,12 +3021,14 @@ a.bg-primary { background: #bca381; transform: rotate(-3deg); } +/* demo 标签内按钮用下划线表达可点,和普通说明分开。 */ .demo-label button { text-decoration: underline; margin-left: 9px; font-size: 8px; } +/* 共享对话框标题与说明统一字号、字距和行高。 */ .dialog-title { font-size: 20px; line-height: 1.5; @@ -2865,10 +3041,12 @@ a.bg-primary { } /* Keep the sidebar-only dashboard accessible at narrow viewport widths. */ +/* 侧栏专用页面后置恢复 display:block,覆盖窄屏的全局侧栏隐藏规则,并给 48px 图标轨留空间。 */ .sidebar-only .workspace-sidebar { display: block; max-width: calc(100vw - 48px); } +/* 侧栏专用页禁用按钮采用 not-allowed,覆盖全局默认 wait 光标。 */ .sidebar-only button:disabled { opacity: 0.45; cursor: not-allowed;