Files
Endoleap/src/styles/globals.css
T

3054 lines
64 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 全局样式入口:主题映射、基础元素、全局命名页面/演示布局及响应式覆盖。当前 CSS Modules 与这些规则并存,后置同名选择器仍会覆盖前文;阅读时要同时检查选择器优先级与媒体条件。本文件只描述呈现,不拥有画布模型或业务状态。 */
/* 引入 Tailwind 的基础与工具样式;本文件后续规则继续参与层叠,不按组件自动隔离。 */
@import "tailwindcss";
/* 把语义颜色/圆角暴露给 Tailwind 工具类;背景/前景/主色引用下方运行时 CSS 变量。 */
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-primary: var(--primary);
--color-primary-foreground: #fff;
--color-secondary: #f1ebe5;
--color-secondary-foreground: #49372e;
--color-muted: #f3efea;
--color-muted-foreground: #85766b;
--color-accent: #f1e7de;
--color-accent-foreground: #49372e;
--color-border: #ded5cc;
--color-input: #d3c3b6;
--color-ring: #9d7d66;
--color-destructive: #af4439;
--color-popover: #fffcf9;
--color-popover-foreground: #38281f;
--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);
background: var(--background);
font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
font-size: 14px;
-webkit-font-smoothing: antialiased;
}
/* 常见交互元素采用 manipulation;具体画布手势仍在局部样式/处理器内禁用默认行为。 */
button,
a,
input,
textarea {
touch-action: manipulation;
}
/* 按钮和链接默认对背景、颜色及 transform 做 0.2s 过渡。 */
button,
a {
transition:
background 0.2s,
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;
}
input:focus,
textarea:focus {
border-color: #78523f !important;
box-shadow: 0 0 0 3px #78523f12;
}
/* 标题、正文和 figure 清除默认 margin,段落间距由各页面规则提供。 */
h1,
h2,
h3,
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;
gap: 9px;
font-size: 19px;
font-weight: 700;
white-space: nowrap;
}
.brand img {
flex-shrink: 0;
}
.brand small {
font-size: 13px;
font-weight: 500;
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;
letter-spacing: 1.7px;
font-weight: 500;
color: #8b7667;
}
/* 导航的初始 flex 布局和背景;文件末尾同名规则将 display 改为 grid。 */
.site-nav {
height: 88px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 max(56px, calc((100% - 1248px) / 2));
border-bottom: 1px solid #e7ddd25c;
background: #fff9f2;
gap: 26px;
}
/* 导航链接横排、悬停加深颜色;最终水平对齐还受末尾 justify-content:center 影响。 */
.site-nav nav {
display: flex;
gap: 32px;
font-size: 12px;
color: #6f6259;
}
.site-nav nav a:hover {
color: #38281f;
}
/* 导航右侧动作横排并禁止标签/链接换行;末尾为 grid 布局补充 justify-self。 */
.nav-actions {
display: flex;
align-items: center;
gap: 26px;
font-size: 12px;
}
.nav-actions [data-slot],
.nav-actions a {
white-space: nowrap;
}
/* 全局命名的 landing 表面裁剪溢出,以下 hero/preview 等样式与局部 LandingPage CSS Module 分开。 */
.landing {
overflow: hidden;
background: #fff9f2;
}
/* 旧首屏标题容器提供定位参照和顶部留白,文案与操作区由后续规则排版。 */
.hero {
position: relative;
padding-top: 90px;
}
.hero .eyebrow {
display: flex;
align-items: center;
gap: 8px;
}
/* 引题中的圆点只提供状态装饰,业务状态不能由颜色规则推断。 */
.status-dot {
height: 6px;
width: 6px;
display: inline-block;
border-radius: 50%;
background: #9e805f;
}
/* 初始标题使用 clamp 限制大小;后置同名规则补充 fit-content 宽度。 */
.hero h1 {
font-size: clamp(42px, 4.5vw, 66px);
font-weight: 650;
letter-spacing: -3px;
line-height: 1.45;
margin-top: 24px;
position: relative;
display: inline-block;
}
/* 标题强调文字初始颜色;最终装饰改由末尾 span 伪元素提供。 */
.hero h1 span {
color: #916e55;
}
/* 旧装饰线的位置与尺寸,末尾最终会隐藏此元素,改绘 span:after。 */
.hero-stroke {
position: absolute;
bottom: -1px;
right: -7px;
width: 215px;
height: 20px;
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;
gap: 32px;
margin-top: 31px;
}
.hero-actions > a {
font-size: 12px;
}
/* 文字链接和箭头并排,悬停只改变文字颜色。 */
.text-link {
display: inline-flex;
align-items: center;
gap: 12px;
font-size: 12px;
font-weight: 500;
}
.text-link:hover {
color: #9d6a48;
}
.hero-actions button,
.hero-actions > a:first-child {
min-width: 155px;
}
/* 人物展示用五列等宽网格,第二/第四项略错位,图注居中且默认不换行。 */
.people-row {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 34px;
margin-top: 65px;
}
.people-row figure {
min-width: 0;
}
.person-slot {
display: flex;
justify-content: center;
}
.person-slot img {
width: 200px;
height: 220px;
}
.people-row figure:nth-child(2) {
padding-top: 11px;
}
.people-row figure:nth-child(4) {
padding-top: 7px;
}
.people-row figcaption {
display: flex;
gap: 12px;
align-items: center;
justify-content: center;
font-size: 11px;
margin-top: 20px;
color: #7f6c5c;
white-space: nowrap;
}
.people-row figcaption span {
font-size: 9px;
color: #b8a595;
font-family: monospace;
}
/* 首屏底注用细上边线分隔,两端文字左右对齐。 */
.hero-footnote {
display: flex;
justify-content: space-between;
margin-top: 43px;
border-top: 1px solid #e8dfd4;
padding: 23px 0 30px;
font-size: 9px;
letter-spacing: 1.3px;
color: #9a8776;
}
/* 产品空间章节采用浅色表面和上下留白;标题区将标题/说明分置两端。 */
.space-section {
padding: 110px 0;
background: #fffdf9;
border-top: 1px solid #eee5da;
}
.section-heading {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 30px;
margin-bottom: 46px;
}
.section-heading p {
font-size: 13px;
line-height: 1.9;
color: #8a786b;
margin-bottom: 5px;
}
/* 全局二级标题默认字号/字距;各页面和窄屏查询按更具体规则覆盖。 */
h2 {
font-size: 38px;
line-height: 1.55;
letter-spacing: -1.4px;
font-weight: 600;
}
.section-heading h2 {
margin-top: 18px;
}
/* 展示预览采用 205px 侧栏加弹性画布,两列共高 550px 并裁剪内部装饰。 */
.product-preview {
border: 1px solid #dfd8ce;
box-shadow: 0 20px 70px #5d453013;
display: grid;
grid-template-columns: 205px 1fr;
border-radius: 10px;
overflow: hidden;
height: 550px;
background: #faf9f6;
}
/* 展示侧栏内部缩小品牌/文字,底注固定到底部,active 行用独立底色。 */
.preview-sidebar {
position: relative;
background: #f3f0e9;
border-right: 1px solid #e3ddd4;
padding: 25px 18px;
font-size: 11px;
}
.preview-sidebar .brand {
font-size: 14px;
margin-bottom: 28px;
}
.preview-sidebar .brand img {
width: 27px;
height: 27px;
}
.preview-sidebar .brand small {
font-size: 9px;
}
.preview-sidebar > p {
margin-bottom: 28px;
display: flex;
justify-content: space-between;
}
.preview-sidebar > div {
padding: 10px 6px;
border-radius: 4px;
color: #847467;
}
.preview-sidebar .preview-active {
background: #e8e1d7;
color: #634b3c;
}
.preview-sidebar > small {
position: absolute;
bottom: 22px;
font-size: 9px;
color: #a79786;
}
/* 展示画布以径向渐变平铺点阵,为便签、图稿和工具条提供相对定位。 */
.preview-canvas {
position: relative;
overflow: hidden;
background-color: #fcfbf8;
background-image: radial-gradient(#c8beb0 0.65px, transparent 0.65px);
background-size: 18px 18px;
}
/* 预览顶部信息栏,span 浮到右侧。 */
.preview-bar {
height: 45px;
background: #fffdf9e6;
border-bottom: 1px solid #e9e3da;
font-size: 10px;
padding: 15px 21px;
}
.preview-bar span {
float: right;
}
/* 纸张预览绝对定位、轻微旋转,以 z-index:2 盖在线条上;内部使用衬线标题。 */
.preview-note {
position: absolute;
left: 8%;
top: 21%;
background: #fffefd;
border: 1px solid #dfd6c9;
width: 31%;
padding: 28px 25px;
transform: rotate(-4deg);
z-index: 2;
box-shadow: 2px 6px 12px #4b362506;
}
.preview-note small {
font-size: 8px;
letter-spacing: 1.1px;
color: #9a8570;
}
.preview-note h3 {
font-family: "Songti SC", serif;
font-weight: 500;
font-size: 26px;
line-height: 1.55;
margin: 24px 0 20px;
}
.preview-note p {
font-size: 10px;
line-height: 1.9;
color: #a08873;
}
/* 艺术预览另一方向旋转,独立设置图形/标题尺寸。 */
.preview-art {
position: absolute;
left: 48%;
top: 18%;
width: 38%;
height: 255px;
background: #f4e9df;
padding: 25px 30px;
transform: rotate(5deg);
z-index: 2;
}
.preview-art .light-shape {
width: 100%;
height: 165px;
}
.preview-art > span {
font-family: "Songti SC", serif;
font-size: 20px;
display: block;
margin-top: 13px;
}
/* 共享灯光插画由椭圆径向渐变和拱形圆角绘制,并非实际图片资源。 */
.light-shape {
background: radial-gradient(
ellipse at 44% 70%,
#fff4e5 0%,
#b9967f 24%,
#745748 53%,
#49372e 85%
);
border-radius: 150px 150px 5px 5px;
}
/* 便签固定相对画布比例位置,右下大型 span 作为装饰。 */
.preview-sticky {
position: absolute;
left: 52%;
top: 65%;
background: #eae9cd;
padding: 20px 22px;
width: 32%;
font-size: 12px;
line-height: 1.7;
transform: rotate(-3deg);
z-index: 2;
}
.preview-sticky > span {
position: absolute;
right: 15px;
bottom: 10px;
font-size: 40px;
color: #9e9e75;
}
/* 展示工具条层级高于卡片;下方连接 SVG 覆盖画布但不截获指针。 */
.preview-tools {
position: absolute;
bottom: 18px;
left: 32%;
padding: 12px 22px;
font-size: 16px;
background: #fff;
border: 1px solid #e3d9cc;
border-radius: 8px;
box-shadow: 0 5px 10px #58402008;
z-index: 3;
}
.preview-connect {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
/* 工具章节提供上下留白,两列工具卡片共用边框和元信息排版。 */
.tools-section {
padding-top: 110px;
padding-bottom: 110px;
}
.tool-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 28px;
}
.tool-card {
padding: 27px;
background: #fffcf8;
border: 1px solid #e2d8cd;
border-radius: 7px;
}
.tool-meta {
font-family: monospace;
font-size: 10px;
color: #9b8776;
display: flex;
justify-content: space-between;
align-items: center;
}
.tool-card h3 {
font-size: 23px;
font-weight: 600;
margin: 27px 0 12px;
letter-spacing: -0.6px;
}
.tool-card p {
font-size: 12px;
line-height: 1.9;
color: #8c7b6e;
max-width: 400px;
min-height: 45px;
}
.tool-card .text-link {
margin-top: 22px;
}
/* 两种工具插画共用固定高度与裁剪容器,各自再定义内容。 */
.type-art,
.canvas-art {
height: 285px;
margin-top: 25px;
position: relative;
overflow: hidden;
}
/* 排版工具插画使用大字与绝对定位装饰字形,形成层叠字样。 */
.type-art {
background: #eae8d2;
padding: 22px 35px;
font-weight: 800;
font-size: 61px;
line-height: 0.95;
letter-spacing: -3px;
}
.type-art > span {
display: block;
font-size: 38px;
letter-spacing: -2px;
font-family: Georgia, serif;
font-weight: 500;
margin-top: 10px;
}
.type-art > i {
position: absolute;
right: 24px;
bottom: -5px;
font-size: 180px;
line-height: 1;
color: #aaa580;
font-style: normal;
font-weight: 400;
transform: rotate(10deg);
}
/* 画布工具插画使用点阵底和旋转便签;第二便签靠右,装饰字符另行定位。 */
.canvas-art {
background-color: #f3eee8;
background-image: radial-gradient(#c5b9a9 1px, transparent 1px);
background-size: 16px 16px;
}
.canvas-art > span {
position: absolute;
padding: 23px 18px;
font-size: 14px;
box-shadow: 0 4px 12px #4d37220b;
background: #fffdf9;
border: 1px solid #e4d8c9;
left: 35px;
top: 44px;
transform: rotate(-6deg);
}
.canvas-art > span:nth-of-type(2) {
left: auto;
right: 38px;
top: 95px;
transform: rotate(6deg);
background: #e7e6c9;
}
.canvas-art > i {
position: absolute;
left: 40%;
top: 80px;
font-size: 70px;
font-style: normal;
font-family: serif;
color: #b2987d;
transform: rotate(12deg);
}
.canvas-art > b {
position: absolute;
bottom: 40px;
left: 22%;
font-size: 25px;
font-weight: 400;
font-family: "Songti SC", serif;
}
/* 灵感章节用独立底色/上下边线,三列图文按统一图片高度排列。 */
.ideas-section {
padding: 100px 0;
background: #f1eadd;
border-top: 1px solid #e9dfd0;
border-bottom: 1px solid #e9dfd0;
}
.ideas-section h2 {
margin-top: 18px;
}
.idea-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 60px;
margin-top: 45px;
}
.idea-grid img {
height: 100px;
width: 130px;
object-position: left center;
margin-bottom: 15px;
}
.idea-grid h3 {
font-size: 17px;
margin-bottom: 10px;
}
.idea-grid p {
font-size: 12px;
line-height: 1.9;
color: #887767;
max-width: 290px;
}
/* 工作流初始两列布局,右侧有序列表移除默认编号,由子 span 自行呈现步骤号。 */
.workflow {
padding-top: 120px;
padding-bottom: 120px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 100px;
}
.workflow h2 {
margin: 18px 0 24px;
}
.workflow p {
color: #8a7768;
font-size: 12px;
line-height: 1.9;
}
.workflow .text-link {
margin-top: 27px;
}
.workflow ol {
padding: 10px 0 0;
list-style: none;
}
.workflow li {
display: flex;
gap: 26px;
padding: 25px 0;
border-bottom: 1px solid #e4d9cc;
}
.workflow li > span {
font-size: 13px;
color: #a08a73;
font-family: monospace;
padding-top: 5px;
}
.workflow li h3 {
font-size: 17px;
margin-bottom: 8px;
}
/* FAQ 限制内容宽度,问题按钮横跨整行,答案留出底部间距。 */
.faq {
max-width: 800px;
padding-bottom: 110px;
}
.faq h2 {
font-size: 29px;
margin: 15px 0 33px;
}
.faq-item {
border-top: 1px solid #e3d9ce;
}
.faq-item:last-child {
border-bottom: 1px solid #e3d9ce;
}
.faq-item button {
border: 0;
background: none;
padding: 23px 0;
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
font-size: 13px;
text-align: left;
}
.faq-item p {
font-size: 12px;
color: #8a796b;
line-height: 1.9;
padding-bottom: 25px;
max-width: 640px;
}
/* 结尾 CTA 区域裁剪右侧大型装饰星,星形 pointer-events:none 避免遮挡动作。 */
.closing {
position: relative;
padding: 90px max(56px, calc((100% - 1248px) / 2));
background: #eae8cf;
overflow: hidden;
}
.closing h2 {
font-size: 44px;
margin: 20px 0 23px;
}
.closing p {
font-size: 12px;
color: #8c8063;
margin-bottom: 27px;
}
.closing-star {
position: absolute;
right: 12%;
top: 30px;
font-size: 330px;
font-weight: 300;
line-height: 1.2;
color: #c7c4a0;
transform: rotate(12deg);
pointer-events: none;
}
/* 页脚品牌、说明和链接横排,正文 flex:1 占据余量;窄屏逐步隐藏次要信息。 */
.site-footer {
display: flex;
align-items: center;
gap: 30px;
padding: 36px max(56px, calc((100% - 1248px) / 2));
font-size: 10px;
background: #fff9f2;
white-space: nowrap;
}
.site-footer .brand {
font-size: 15px;
}
.site-footer .brand img {
width: 27px;
height: 27px;
}
.site-footer .brand small {
font-size: 10px;
}
.site-footer p {
color: #9a8775;
flex: 1;
}
.site-footer a:not(.brand) {
display: flex;
gap: 7px;
align-items: center;
}
.site-footer > span {
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;
background: linear-gradient(125deg, #211b17 8%, #634635 40%, #241e19 85%);
color: #fff9f2;
padding: 40px;
}
.auth-story > .brand small {
display: block;
margin-left: 0;
font-size: 10px;
font-weight: 400;
letter-spacing: 1px;
color: #c2b6ae;
}
/* 故事文案与上方品牌拉开距离,浅色正文适配深背景。 */
.auth-story-copy {
margin-top: 105px;
}
.auth-story .eyebrow {
color: #beaea2;
font-size: 10px;
}
.auth-story-copy h1 {
font-size: 42px;
line-height: 1.5;
letter-spacing: -1.5px;
font-weight: 650;
margin: 28px 0 22px;
}
.auth-story-copy > p {
color: #ddd0c3;
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;
width: 220px;
border-radius: 16px;
height: 250px;
padding: 25px;
box-shadow: 0 20px 30px #140c0726;
}
/* 便签偏左下,深底浅边;图稿位于右上,用共享 light-shape 装饰。 */
.auth-note {
left: 0;
top: 18px;
transform: rotate(-8deg);
background: #2c241f;
border: 1px solid #85776c80;
}
.auth-note small,
.auth-art small {
font-size: 8px;
letter-spacing: 0.8px;
}
.auth-note h2 {
font-size: 24px;
line-height: 1.6;
letter-spacing: -0.8px;
margin: 28px 0 20px;
font-weight: 500;
}
.auth-note p {
font-size: 10px;
color: #bcada2;
}
/* 右侧图稿旋转并使用浅纸色,内部插画和标题单独排版。 */
.auth-art {
left: 46%;
top: 0;
transform: rotate(8deg);
height: 276px;
background: #fff6ee;
color: #4b382d;
padding: 22px;
}
.auth-art .light-shape {
height: 145px;
margin-top: 22px;
width: 100%;
}
.auth-art h3 {
font-size: 19px;
font-family: "Songti SC", serif;
margin-top: 12px;
}
.auth-art p {
font-size: 8px;
color: #8f7a6b;
margin-top: 8px;
}
/* 椭圆轨道绝对铺在拼贴区域,caption 居中;故事 footer 固定在故事列底部。 */
.auth-orbit {
position: absolute;
inset: 0 20px;
border: 1px solid #b19b7c35;
border-radius: 50%;
transform: rotate(15deg);
}
.auth-caption {
display: block;
font-size: 8px;
color: #bbada2;
letter-spacing: 2px;
text-align: center;
margin-top: 6px;
}
.auth-story > footer {
position: absolute;
bottom: 24px;
left: 40px;
font-size: 9px;
color: #ae9d90;
}
/* 表单列 flex 居中,返回链接绝对放在右上;表单容器限制最大宽度。 */
.auth-main {
position: relative;
display: flex;
align-items: center;
justify-content: center;
padding: 100px 50px;
background: #fffcf9;
}
.auth-back {
position: absolute;
right: 40px;
top: 37px;
display: flex;
align-items: center;
gap: 10px;
font-size: 11px;
color: #8f7b6a;
}
.auth-form-wrap {
width: 100%;
max-width: 420px;
text-align: center;
}
.auth-form-wrap > .eyebrow {
font-size: 8px;
letter-spacing: 1.4px;
color: #a59383;
}
.auth-form-wrap > h1 {
font-size: 30px;
font-weight: 600;
letter-spacing: -1px;
margin: 16px 0 8px;
}
.auth-form-wrap > p {
font-size: 12px;
color: #8e7a69;
}
/* 登录/注册页签平分行宽,aria-selected 决定当前白底和字体强调。 */
.auth-tabs {
background: #f1e8df;
border: 1px solid #e5d6c8;
display: flex;
gap: 4px;
padding: 4px;
border-radius: 8px;
margin-top: 35px;
margin-bottom: 26px;
}
.auth-tabs button {
flex: 1;
background: none;
border: none;
height: 36px;
font-size: 12px;
color: #a08a78;
border-radius: 5px;
}
.auth-tabs button[aria-selected="true"] {
background: #fffcf9;
color: #634b3b;
box-shadow: 0 1px 3px #634b3b0a;
font-weight: 600;
}
.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;
border: 1px solid #c9b5a4;
border-radius: 7px;
background: transparent;
padding: 0 14px;
width: 100%;
font-size: 13px;
color: #49372e;
}
.auth-form-wrap input::placeholder,
.dialog-input::placeholder {
color: #b0a093;
}
.auth-form-wrap form > input {
margin-bottom: 21px;
}
/* 密码输入右侧留出空间,显示切换按钮绝对放在输入内侧。 */
.password-field {
position: relative;
}
.password-field input {
padding-right: 45px;
}
.password-field button {
position: absolute;
right: 13px;
top: 14px;
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;
border-top: 1px solid #e9ded3;
}
.auth-divider span {
position: relative;
top: -9px;
padding: 0 13px;
font-size: 10px;
color: #ae9a86;
background: #fffcf9;
}
/* 社交按钮等分宽度;Google/Slack 字形标记仅是外观,授权行为由组件处理。 */
.social-buttons {
display: flex;
gap: 12px;
}
.social-buttons button {
flex: 1;
height: 42px;
}
.google-mark {
font-family: Arial;
font-size: 17px;
color: #6282a4;
}
.slack-mark {
font-size: 24px;
font-family: Arial;
color: #7c586e;
}
/* 表单说明和 demo 链接使用更小字号,和主动作区分。 */
.auth-form-wrap > .auth-notice {
font-size: 10px;
line-height: 1.9;
margin-top: 23px;
color: #a38d79;
}
.demo-link {
font-size: 10px;
color: #a4927e;
display: inline-flex;
gap: 5px;
align-items: center;
margin-top: 22px;
}
/* 错误/成功共用提示尺寸,随后分别用暖红和浅绿配色表达结果。 */
.form-error,
.form-success {
font-size: 12px;
line-height: 1.7;
padding: 10px 12px;
margin-top: 13px;
border-radius: 5px;
}
.form-error {
background: #faebe5;
color: #a34435;
}
.form-success {
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;
left: 0;
top: 0;
bottom: 0;
background: #f6f3ee;
border-right: 1px solid #e8e4df;
display: flex;
flex-direction: column;
align-items: center;
padding: 17px 4px;
z-index: 30;
}
/* 图标轨导航纵排,hover/active 背景与底色区分。 */
.rail-nav {
display: flex;
flex-direction: column;
gap: 7px;
margin-top: 28px;
}
.icon-rail button {
width: 35px;
height: 35px;
border-radius: 5px;
display: flex;
align-items: center;
justify-content: center;
color: #776a5e;
}
.icon-rail button:hover,
.icon-rail button.active {
background: #e9e1d7;
}
.rail-bottom {
margin-top: auto;
display: flex;
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;
left: 48px;
top: 0;
bottom: 0;
background: #fbf9f5;
border-right: 1px solid #e8e4df;
padding: 0 14px;
z-index: 25;
}
/* 工作区切换器提供下拉菜单定位参照,长名称允许省略。 */
.workspace-switch {
position: relative;
border-bottom: 1px solid #e9e4dd;
margin: 0 -3px;
padding: 19px 0 14px;
}
.workspace-switch > button {
display: flex;
align-items: center;
gap: 9px;
width: 100%;
font-size: 12px;
text-align: left;
}
.workspace-switch > button > span:nth-child(2) {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* 工作区首字头像居中;下拉菜单绝对定位在切换按钮下方并提高层级。 */
.workspace-avatar {
background: #e9e6cc;
width: 27px;
height: 27px;
border-radius: 5px;
display: grid;
place-items: center;
font-size: 16px;
}
/* 切换菜单内部按钮整行横排,悬停浅底,是否打开由组件决定。 */
.workspace-menu {
position: absolute;
top: 60px;
left: 0;
width: 235px;
background: #fffcf9;
border: 1px solid #dfd3c5;
box-shadow: 0 10px 30px #3f29151c;
border-radius: 8px;
padding: 8px;
z-index: 60;
}
.workspace-menu button {
display: flex;
gap: 8px;
align-items: center;
justify-content: space-between;
width: 100%;
padding: 10px;
text-align: left;
font-size: 12px;
border-radius: 4px;
}
.workspace-menu button:hover {
background: #f3eae0;
}
/* 用户身份行中间文字占剩余空间,小头像兼容首字占位。 */
.profile-row {
display: flex;
align-items: center;
gap: 9px;
padding: 18px 0 21px;
width: 100%;
font-size: 11px;
}
.profile-row > span:nth-child(2) {
flex: 1;
text-align: left;
}
.user-avatar {
width: 24px;
height: 24px;
border-radius: 5px;
background: #ece3d9;
display: grid;
place-items: center;
font-size: 10px;
color: #78523f;
}
/* 目录分组小标题与带附加操作的 flex 标题共用基准间距。 */
.sidebar-label {
font-size: 9px;
color: #a19588;
letter-spacing: 0.7px;
margin: 15px 8px 12px;
}
.sidebar-label-flex {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 30px;
}
/* 侧栏项目整行显示,图标不收缩;hover 与 selected 背景分别表达经过与当前项。 */
.side-item {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 9px;
width: 100%;
font-size: 11px;
text-align: left;
border-radius: 5px;
min-height: 34px;
margin: 3px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.side-item svg {
flex-shrink: 0;
color: #8b7c6b;
}
.side-item:hover {
background: #f0ebe4;
}
.side-item.selected {
background: #eee7df;
color: #78523f;
}
/* 全局弱文字辅助类,只改变颜色。 */
.muted {
color: #a49788;
}
/* 侧栏底部介绍绝对锚定,含边线、品牌与 demo 徽标,不参与目录流布局。 */
.sidebar-bottom {
position: absolute;
bottom: 21px;
left: 22px;
right: 22px;
border-top: 1px solid #e9e3dc;
padding-top: 16px;
}
.sidebar-bottom > p {
font-size: 9px;
color: #a79888;
margin-bottom: 17px;
}
.sidebar-bottom-line {
display: flex;
align-items: center;
justify-content: space-between;
}
.sidebar-bottom .brand {
font-size: 11px;
gap: 4px;
}
.sidebar-bottom .brand img {
width: 22px;
height: 22px;
}
.sidebar-bottom .brand small {
font-size: 9px;
}
/* 小字号描边徽标仅提供演示标记外观。 */
.demo-badge {
font-size: 8px;
color: #a58f79;
border: 1px solid #dcd0be;
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;
display: flex;
align-items: center;
gap: 15px;
padding: 0 27px;
font-size: 10px;
color: #8f8173;
}
/* 全局小按钮为 28px;与组件模块中的 IconButton 共享尺寸机制不同。 */
.icon-button {
display: grid;
place-items: center;
width: 28px;
height: 28px;
border-radius: 4px;
color: #8d7f70;
}
.icon-button:hover {
background: #f1ebe3;
}
/* 面包屑分隔用弱色,demo 标签另设小字号。 */
.breadcrumb {
color: #d2c7b8;
}
.header-right {
display: flex;
gap: 16px;
align-items: center;
margin-left: auto;
}
.demo-label {
font-size: 9px;
color: #a79783;
}
/* 主内容居中并限宽,欢迎文案、快捷创建和图谱网格在内部顺序排布。 */
.workspace-content {
max-width: 1190px;
padding: 56px 64px;
margin: auto;
}
/* 欢迎区为装饰星提供定位参照,标题与说明使用不同字号/颜色。 */
.welcome-top {
position: relative;
}
.welcome-top .eyebrow {
font-size: 8px;
letter-spacing: 1.3px;
color: #b09b86;
}
.welcome-top h1 {
font-size: 29px;
letter-spacing: -1px;
font-weight: 550;
margin: 17px 0 13px;
}
.welcome-top p {
font-size: 12px;
color: #a08f7d;
}
.welcome-spark {
position: absolute;
right: 14px;
top: -12px;
font-size: 85px;
color: #d3c5ad;
transform: rotate(10deg);
font-weight: 300;
}
/* 两列快捷创建按钮包含图标、文字与靠右箭头,hover 上移并强调边框。 */
.quick-create {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 17px;
margin: 36px 0 53px;
}
.quick-create > button {
display: flex;
gap: 17px;
align-items: center;
text-align: left;
border: 1px solid #e4dcd1;
border-radius: 8px;
padding: 18px;
background: #fffcf8;
}
.quick-create > button:hover {
border-color: #b69b7e;
transform: translateY(-2px);
box-shadow: 0 5px 12px #4f301505;
}
/* 快捷创建图标底块固定尺寸,peach/olive 只提供底色。 */
.quick-icon {
width: 47px;
height: 47px;
border-radius: 8px;
display: grid;
place-items: center;
}
.peach {
background: #f0e4d7;
}
.olive {
background: #e9e8d2;
}
.quick-create > button h3 {
font-size: 13px;
font-weight: 500;
}
.quick-create > button p {
font-size: 10px;
color: #a08e7c;
margin-top: 6px;
}
.quick-create > button > svg {
margin-left: auto;
color: #ad9985;
}
/* 文件标题和筛选动作横排;搜索输入透明无边框,宽度在响应式中逐步收缩/隐藏。 */
.files-heading {
display: flex;
align-items: center;
justify-content: space-between;
gap: 15px;
}
.files-heading h2 {
font-size: 18px;
letter-spacing: -0.5px;
}
.files-heading > div {
display: flex;
align-items: center;
gap: 12px;
}
.board-search {
display: flex;
align-items: center;
gap: 8px;
color: #ad9b86;
}
.board-search input {
border: 0;
background: transparent;
width: 135px;
font-size: 10px;
padding: 8px 0;
}
.board-search input::placeholder {
color: #baa995;
}
/* 文件筛选页签用底部边线,active 只在当前按钮显示主色下划线。 */
.file-tabs {
display: flex;
gap: 25px;
border-bottom: 1px solid #e9e2d8;
margin: 17px 0 24px;
font-size: 10px;
color: #a08d7a;
}
.file-tabs > button {
padding: 9px 0 13px;
border-bottom: 2px solid transparent;
}
.file-tabs > button.active {
border-color: #78523f;
color: #78523f;
}
/* 图谱卡片桌面三列,断点后两列/一列;卡片 hover 上移并加阴影。 */
.board-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 21px;
}
.board-card {
border: 1px solid #e4dcd1;
border-radius: 7px;
overflow: hidden;
text-align: left;
background: #fffdfa;
transition:
box-shadow 0.2s,
transform 0.2s;
}
.board-card:hover {
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;
}
.cover-title {
font-family: "Songti SC", serif;
font-size: 19px;
color: #80634b;
position: relative;
z-index: 2;
}
.cover-0 .light-shape {
width: 70%;
height: 115px;
position: absolute;
right: 10%;
top: 48px;
}
.cover-small {
position: absolute;
bottom: 12px;
font-size: 6px;
letter-spacing: 1px;
color: #a28c78;
}
/* 第二封面用衬线大字,右下装饰字符可超出裁剪区域。 */
.cover-1 {
background: #eae7d2;
padding: 24px;
}
.cover-serif {
font-family: Georgia, "Songti SC", serif;
font-size: 28px;
line-height: 1.15;
letter-spacing: -1px;
color: #655b41;
position: relative;
z-index: 2;
}
.cover-serif i {
font-weight: 400;
color: #8e8055;
}
.cover-1 > b {
position: absolute;
right: -5px;
bottom: -20px;
font-size: 145px;
line-height: 1;
color: #c8c3a3;
font-weight: 400;
}
/* 第三封面用浅绿底、底部标题和相互重叠的圆圈。 */
.cover-2 {
background: #e4e8e1;
padding: 26px 21px;
}
.cover-2 .cover-serif {
font-size: 22px;
position: absolute;
bottom: 20px;
}
.cover-circles {
display: flex;
position: absolute;
top: 19px;
left: 47px;
}
.cover-circles span {
width: 80px;
height: 80px;
border: 1px solid #a7b5a5;
border-radius: 50%;
margin-left: -25px;
background: #c4d0be33;
}
/* 卡片信息横排,中间文字容器 min-width:0 允许标题省略,不反向撑宽网格。 */
.board-card-info {
display: flex;
gap: 10px;
align-items: center;
padding: 16px 14px;
}
.board-card-info > div {
flex: 1;
min-width: 0;
}
.board-card-info h3 {
font-size: 11px;
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.board-card-info p {
font-size: 8px;
color: #b19e88;
margin-top: 6px;
}
.board-card-info > svg {
color: #b6a38f;
}
/* 底部提示限制装饰图溢出,文字在普通流内,右侧插画绝对定位。 */
.workspace-tip {
position: relative;
border-top: 1px solid #e9e1d6;
margin-top: 56px;
padding: 35px 0;
display: flex;
align-items: center;
gap: 17px;
overflow: hidden;
min-height: 120px;
}
.workspace-tip > span {
font-size: 27px;
color: #bcaa8e;
}
.workspace-tip p {
font-size: 10px;
line-height: 1.9;
color: #ab9781;
}
.workspace-tip strong {
font-weight: 500;
color: #93806d;
}
.workspace-tip > img {
position: absolute;
right: 20px;
top: 10px;
opacity: 0.7;
}
/* 空列表状态纵向居中,给创建动作留出独立间距。 */
.empty-state {
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
min-height: 240px;
gap: 13px;
color: #ac9984;
}
.empty-state h3 {
font-size: 16px;
color: #88735d;
font-weight: 500;
}
.empty-state p {
font-size: 11px;
text-align: center;
}
.empty-state button {
margin-top: 8px;
}
/* 工作区错误横条让说明/操作分置两侧,提示层不代替业务错误状态。 */
.workspace-error {
padding: 14px 25px;
font-size: 12px;
background: #fceddf;
color: #a2583e;
display: flex;
justify-content: space-between;
gap: 15px;
}
/* 补充共享对话框输入的上下外边距,其尺寸/边框已在认证输入组合规则定义。 */
.dialog-input {
margin-bottom: 23px;
margin-top: 1px;
}
/* 旧全局 toast 固定底部居中并限于 90vw;不要与 sonner 的通知状态存储混为一体。 */
.toast {
position: fixed;
bottom: 25px;
left: 50%;
transform: translateX(-50%);
padding: 14px 23px;
background: #49372e;
color: #fff9f2;
display: flex;
gap: 10px;
align-items: center;
font-size: 12px;
border-radius: 8px;
box-shadow: 0 8px 25px #38281f33;
z-index: 100;
max-width: 90vw;
}
/* 页面加载态占满动态视口,以 grid 居中提示内容。 */
.loading-page {
display: grid;
align-content: center;
justify-content: center;
gap: 20px;
min-height: 100dvh;
}
.loading-page p {
font-size: 12px;
color: #a58d75;
}
/* 全局命名的展示画布布局;以下固定舞台/示例纸张样式不表示 headless 文档、视口或几何模型。 */
.canvas-main {
height: 100dvh;
overflow: hidden;
}
/* 展示视口扣掉 63px 顶栏高度,允许内部滚动并铺点阵背景。 */
.canvas-viewport {
position: relative;
overflow: auto;
height: calc(100dvh - 63px);
background-color: #fafafa;
background-image: radial-gradient(#cfc9bf 0.6px, transparent 0.6px);
background-size: 18px 18px;
}
/* 展示标题和缩放控制绝对浮在视口上方,与 CSS Module 工作区浮动条的定位规则分开。 */
.canvas-floating-title {
position: absolute;
left: 20px;
top: 18px;
display: flex;
align-items: center;
gap: 9px;
padding: 10px 14px;
background: #fff;
border: 1px solid #e4dcd3;
border-radius: 7px;
font-size: 11px;
z-index: 5;
box-shadow: 0 2px 10px #291e0c06;
}
.canvas-floating-title span {
font-size: 8px;
color: #b4a38f;
margin-left: 10px;
}
.canvas-zoom {
position: absolute;
right: 20px;
top: 18px;
display: flex;
align-items: center;
gap: 12px;
font-size: 10px;
z-index: 5;
background: white;
border: 1px solid #e4dcd3;
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;
left: 190px;
width: 740px;
height: 600px;
border: 1px solid #9d7a62;
background: #fff;
padding: 33px 31px;
display: grid;
grid-template-columns: 268px 310px;
grid-template-rows: 150px 230px 100px;
gap: 24px 64px;
}
/* 纸张标题放在上边框外,副信息使用小字距;正文与可编辑 textarea 共用排版。 */
.board-caption {
position: absolute;
left: 0;
top: -28px;
font-size: 11px;
}
.board-caption span {
font-size: 8px;
color: #9e9385;
margin-left: 20px;
}
.study-board h3 {
font-family: "Songti SC", serif;
font-size: 17px;
font-weight: 500;
margin-bottom: 13px;
}
.study-board p,
.study-board textarea {
font-size: 13px;
line-height: 1.9;
color: #54493f;
}
/* 示例文本域背景透明,可纵向调整高度,最小高度 75px。 */
.study-text textarea {
border: 1px solid transparent;
resize: vertical;
min-height: 75px;
width: 100%;
padding: 0;
background: transparent;
outline: 0;
}
/* 声音示例与插画示例各有底色与固定高度,插画复用 light-shape。 */
.study-sound {
background: #ede9d0;
padding: 18px;
height: 151px;
margin-top: 0;
}
.study-sound p {
font-size: 12px;
}
.study-art {
background: #fff6ef;
padding: 22px;
height: 250px;
}
.study-art h3 {
font-size: 23px;
color: #49372e;
}
.study-art .light-shape {
height: 145px;
width: 244px;
margin-top: 20px;
}
/* 清单 label 横排复选框/文字,accent-color 使用主色。 */
.study-checks {
margin-top: -8px;
}
.study-checks label {
display: flex;
align-items: center;
gap: 5px;
font-size: 12px;
color: #54493f;
margin: 4px 0;
}
.study-checks input {
accent-color: #78523f;
}
/* 色板标题和色块纵向排列,色块横排且固定尺寸。 */
.study-palette {
padding-top: 8px;
}
.study-palette small {
font-size: 11px;
color: #918272;
}
.study-palette > div {
display: flex;
gap: 8px;
margin-top: 12px;
}
.study-palette span {
width: 54px;
height: 34px;
border-radius: 3px;
}
/* 舞台外便签独立绝对定位,字号与脚注相对纸张内容缩小。 */
.loose-note {
position: absolute;
left: 20px;
top: 310px;
width: 140px;
height: 220px;
padding: 18px 16px;
background: #fff;
border: 1px solid #e6ddd2;
border-radius: 7px;
}
.loose-note small {
font-size: 12px;
}
.loose-note p {
margin: 25px 0;
font-size: 12px;
line-height: 1.9;
}
.loose-note > span {
font-size: 9px;
color: #a39380;
}
/* 旧展示工具栏固定在视口底部,额外向右偏移 100px 适配侧栏;窄屏断点调整该偏移。 */
.canvas-toolbar {
position: fixed;
bottom: 19px;
left: calc(50% + 100px);
transform: translateX(-50%);
display: flex;
padding: 5px;
background: #fff;
border: 1px solid #ded5c9;
box-shadow: 0 5px 16px #291e0c0c;
border-radius: 9px;
gap: 4px;
z-index: 12;
}
.canvas-toolbar > button {
width: 36px;
height: 32px;
display: grid;
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;
gap: 9px;
padding: 25px 8px 15px;
font-size: 11px;
}
.layer-label > svg {
margin-left: auto;
}
.layer {
font-size: 11px;
padding: 8px 12px;
}
/* 展示用新建便签绝对定位,文本域可纵向伸展,删除按钮固定右上。 */
.new-canvas-node {
position: absolute;
left: 65px;
top: 70px;
background: #eeebcf;
padding: 18px;
width: 210px;
border: 1px solid #d5cdb0;
z-index: 8;
}
.new-canvas-node textarea {
width: 100%;
height: 90px;
font-size: 12px;
background: none;
resize: vertical;
}
.new-canvas-node button {
position: absolute;
right: 5px;
top: 5px;
}
/* 全局演示深色效果用滤镜反转/色相旋转;后续图片/封面再次反转以补偿,并非完整主题 token 切换。 */
.dark-workspace {
filter: invert(0.87) hue-rotate(180deg);
}
.dark-workspace img,
.dark-workspace .board-cover,
.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));
}
.auth-story-copy {
margin-top: 125px;
}
.auth-collage {
margin-top: 55px;
}
}
/* 1100px 以下压缩全局页面与登录拼贴;侧栏收为 215px,主区相应偏移 263px。 */
@media (max-width: 1100px) {
/* 中屏缩小页面左右留白,导航链接间距和品牌字号一起压缩。 */
.container {
width: calc(100% - 72px);
}
.site-nav {
padding: 0 36px;
}
.site-nav nav {
gap: 20px;
}
.brand {
font-size: 17px;
}
.brand small {
font-size: 11px;
}
/* 人物间距与图注缩小,隐藏图注编号,图片高度交回固有比例。 */
.people-row {
gap: 20px;
}
.people-row figcaption {
gap: 6px;
font-size: 9px;
}
.people-row figcaption span {
display: none;
}
.people-row img {
height: auto;
}
/* 首屏留白和预览整体高度缩小;纸张/图稿 padding、字号与便签文字同步调整。 */
.hero {
padding-top: 70px;
}
.product-preview {
grid-template-columns: 170px 1fr;
height: 490px;
}
.preview-note {
padding: 22px 16px;
}
.preview-note h3 {
font-size: 21px;
}
.preview-art {
padding: 20px;
height: 235px;
}
.preview-art .light-shape {
height: 145px;
}
.preview-sticky {
font-size: 10px;
}
/* 工具插画缩小大字,工作流列间距、页脚和结尾区留白也一并收紧。 */
.type-art {
font-size: 54px;
padding-left: 25px;
}
.type-art i {
font-size: 140px;
}
.workflow {
gap: 60px;
}
.site-footer {
padding: 30px 36px;
}
.site-footer > span {
display: none;
}
.closing {
padding-left: 36px;
}
/* 登录故事/拼贴改用更小卡片与内边距,右侧表单减小水平留白。 */
.auth-story {
padding: 32px 28px;
}
.auth-story-copy h1 {
font-size: 35px;
}
.auth-story-copy > p {
font-size: 11px;
}
.auth-collage {
margin-top: 45px;
height: 290px;
}
.auth-art,
.auth-note {
width: 180px;
padding: 20px;
}
.auth-art {
left: 43%;
height: 250px;
}
.auth-art .light-shape {
height: 125px;
}
.auth-note {
height: 225px;
}
.auth-note h2 {
font-size: 22px;
}
.auth-story > footer {
left: 28px;
}
.auth-main {
padding: 90px 38px;
}
/* 全局工作区边距收紧,侧栏 215px 与主区 263px 偏移相配。 */
.workspace-content {
padding: 43px 35px;
}
.workspace-sidebar {
width: 215px;
}
.workspace-main {
margin-left: 263px;
width: calc(100% - 263px);
}
/* 图谱仍为三列,只缩小间隙、封面和文字,隐藏信息行中的次要图标。 */
.board-grid {
gap: 14px;
}
.board-cover {
height: 165px;
}
.cover-serif {
font-size: 24px;
}
.board-card-info {
padding: 14px 10px;
}
.board-card-info > .ui-icon {
display: none;
}
/* 快捷创建按钮减少 padding/图标尺寸,欢迎区装饰和搜索框也随之缩小。 */
.quick-create {
gap: 12px;
}
.quick-create > button {
padding: 14px 12px;
gap: 10px;
}
.quick-icon {
height: 40px;
width: 40px;
}
.welcome-top h1 {
font-size: 26px;
}
.welcome-spark {
font-size: 65px;
}
.board-search input {
width: 100px;
}
}
/* 800px 以下隐藏导航链接和登录故事,章节标题改纵排、图谱网格改两列;全局侧栏收为 195px。 */
@media (max-width: 800px) {
/* 隐藏全局导航链接,保留品牌与操作;后置 grid 覆盖并不重新显示这些链接。 */
.site-nav nav {
display: none;
}
/* 首屏标题与人物图注进一步缩小,图注允许换行。 */
.hero h1 {
font-size: 45px;
letter-spacing: -2px;
}
.hero-stroke {
width: 165px;
}
.people-row {
margin-top: 45px;
gap: 12px;
}
.people-row figcaption {
font-size: 8px;
white-space: normal;
}
/* 章节标题/说明从横排改为纵排,减少区块上下距离。 */
.section-heading {
align-items: flex-start;
flex-direction: column;
gap: 15px;
margin-bottom: 30px;
}
.space-section {
padding: 70px 0;
}
.section-heading h2,
h2 {
font-size: 32px;
}
.section-heading p {
font-size: 12px;
}
/* 预览侧栏压到 140px,隐藏副标/底注;画布卡片按百分比重新定位并缩小。 */
.product-preview {
grid-template-columns: 140px 1fr;
height: 420px;
}
.preview-sidebar {
padding: 20px 12px;
font-size: 9px;
}
.preview-sidebar .brand small {
display: none;
}
.preview-sidebar > small {
display: none;
}
.preview-note {
width: 38%;
left: 5%;
padding: 18px 13px;
top: 23%;
}
.preview-note h3 {
font-size: 18px;
}
.preview-note p {
font-size: 8px;
}
.preview-art {
width: 42%;
left: 51%;
height: 190px;
padding: 18px 15px;
top: 25%;
}
.preview-art .light-shape {
height: 115px;
}
.preview-art > span {
font-size: 16px;
}
.preview-sticky {
top: 73%;
width: 43%;
left: 43%;
padding: 10px 14px;
font-size: 9px;
}
.preview-sticky span {
font-size: 25px;
}
.preview-tools {
left: 18%;
font-size: 12px;
bottom: 10px;
padding: 10px 15px;
}
/* 工具卡与插画缩小字号/间距,保留双列工具网格;下一断点才改单列。 */
.tools-section {
padding-top: 70px;
padding-bottom: 70px;
}
.tool-card {
padding: 20px;
}
.tool-card h3 {
font-size: 21px;
}
.tool-card p {
font-size: 11px;
}
.type-art,
.canvas-art {
height: 240px;
}
.type-art {
font-size: 48px;
padding: 25px 20px;
}
.type-art > span {
font-size: 30px;
}
.type-art i {
font-size: 110px;
right: 8px;
bottom: 5px;
}
.canvas-art > span {
left: 15px;
padding: 15px 10px;
font-size: 11px;
}
.canvas-art > span:nth-of-type(2) {
right: 15px;
}
.canvas-art > b {
font-size: 20px;
left: 12%;
}
/* 灵感卡片和工作流压缩间距/字号,FAQ 与结尾区减少留白。 */
.ideas-section {
padding: 65px 0;
}
.idea-grid {
gap: 25px;
}
.idea-grid h3 {
font-size: 15px;
}
.idea-grid p {
font-size: 11px;
}
.workflow {
padding-top: 70px;
padding-bottom: 70px;
gap: 35px;
}
.workflow h2 {
font-size: 30px;
}
.workflow li {
gap: 15px;
}
.workflow li h3 {
font-size: 14px;
}
.workflow li p {
font-size: 11px;
}
.faq {
padding-bottom: 70px;
}
.faq h2 {
font-size: 26px;
}
.closing {
padding: 60px 36px;
}
.closing h2 {
font-size: 36px;
}
.closing-star {
right: -40px;
font-size: 290px;
top: 30px;
opacity: 0.6;
}
/* 页脚允许换行,并隐藏非品牌的直系链接。 */
.site-footer {
flex-wrap: wrap;
gap: 17px;
}
.site-footer p {
font-size: 9px;
}
.site-footer > a:not(.brand) {
display: none;
}
/* 移除登录故事列,auth-page 改 block,表单区独占至少一个动态视口高度。 */
.auth-story {
display: none;
}
.auth-page {
display: block;
}
.auth-main {
min-height: 100dvh;
padding: 110px 28px 55px;
}
.auth-back {
right: 28px;
top: 28px;
}
.auth-form-wrap {
max-width: 390px;
}
.auth-form-wrap > h1 {
font-size: 30px;
}
/* 侧栏缩到 195px,主区偏移 243px;图谱改两列,快捷创建改一列。 */
.workspace-content {
padding: 40px 25px;
}
.workspace-sidebar {
width: 195px;
padding: 0 10px;
}
.workspace-main {
margin-left: 243px;
width: calc(100% - 243px);
}
.board-grid {
grid-template-columns: 1fr 1fr;
}
.quick-create {
grid-template-columns: 1fr;
}
.quick-create > button {
padding: 14px;
}
.welcome-top h1 {
font-size: 24px;
}
.welcome-top p {
font-size: 11px;
max-width: 75%;
line-height: 1.9;
}
.welcome-spark {
font-size: 50px;
top: 13px;
}
/* 隐藏头部 demo 标签与图谱搜索,筛选动作缩小,减少头部拥挤。 */
.header-right .demo-label {
display: none;
}
.workspace-header {
padding: 0 16px;
gap: 10px;
}
.files-heading {
align-items: flex-start;
}
.files-heading > div {
gap: 5px;
}
.files-heading button {
font-size: 10px;
padding: 0 9px;
}
.board-search {
display: none;
}
.board-cover {
height: 170px;
}
.board-card-info h3 {
font-size: 10px;
}
.cover-title {
font-size: 16px;
}
.workspace-tip img {
right: -25px;
opacity: 0.35;
}
/* 仅调整展示舞台的变换原点、缩放控件高度与工具条偏移,不改变业务画布坐标。 */
.canvas-stage {
transform-origin: 20% 40%;
}
.canvas-zoom {
top: 70px;
}
.canvas-toolbar {
left: calc(50% + 75px);
}
}
/* 560px 以下按单列内容收拢:人物仅留前三项,工具/灵感/工作流/图谱转单列,全局侧栏隐藏。 */
@media (max-width: 560px) {
/* 手机边距收为两侧 20px,导航缩高,品牌副标与第一个次要动作隐藏。 */
.container {
width: calc(100% - 40px);
}
.site-nav {
height: 74px;
padding: 0 20px;
gap: 12px;
}
.site-nav .brand {
font-size: 16px;
}
.site-nav .brand img {
width: 31px;
height: 31px;
}
.site-nav .brand small {
display: none;
}
.nav-actions {
gap: 15px;
font-size: 11px;
}
.nav-actions > a:first-child {
display: none;
}
.nav-actions .inline-flex {
font-size: 11px;
height: 34px;
padding: 0 12px;
}
/* 首屏标题/引题/正文/按钮进一步缩小,人物网格改三列并隐藏第四项起的 figure。 */
.hero {
padding-top: 55px;
}
.hero .eyebrow {
font-size: 7px;
letter-spacing: 1.1px;
}
.hero h1 {
font-size: 33px;
letter-spacing: -1.8px;
line-height: 1.6;
margin-top: 21px;
}
.hero-stroke {
width: 120px;
height: 12px;
bottom: 0;
}
.hero-copy {
font-size: 11px;
margin-top: 25px;
}
.hero-actions {
gap: 18px;
margin-top: 25px;
}
.hero-actions .text-link {
font-size: 9px;
gap: 6px;
}
.hero-actions > a:first-child {
min-width: 125px;
font-size: 11px;
height: 42px;
}
.people-row {
gap: 8px;
margin-top: 50px;
grid-template-columns: repeat(3, 1fr);
}
.people-row figure:nth-child(n + 4) {
display: none;
}
.people-row figcaption {
font-size: 8px;
line-height: 1.5;
margin-top: 14px;
}
.people-row figure:nth-child(2) {
padding-top: 6px;
}
/* 首屏底注与章节引题缩小字距/字号;二级标题在本断点降到 28px。 */
.hero-footnote {
font-size: 6px;
letter-spacing: 0.8px;
margin-top: 30px;
padding: 17px 0 20px;
}
.hero-footnote span:last-child {
font-size: 7px;
}
.section-heading .eyebrow,
.eyebrow {
font-size: 8px;
letter-spacing: 1px;
}
.section-heading h2,
h2 {
font-size: 28px;
}
.section-heading p {
font-size: 10px;
}
.space-section {
padding: 50px 0;
}
/* 预览高度降为 330px、侧栏仅 85px,内部文字/卡片/工具条按手机比例缩小。 */
.product-preview {
height: 330px;
grid-template-columns: 85px 1fr;
border-radius: 6px;
}
.preview-sidebar {
padding: 18px 7px;
font-size: 6px;
}
.preview-sidebar .brand {
font-size: 8px;
gap: 3px;
margin-bottom: 18px;
}
.preview-sidebar .brand img {
width: 18px;
height: 18px;
}
.preview-sidebar > p {
margin-bottom: 18px;
font-size: 6px;
}
.preview-sidebar > div {
padding: 7px 2px;
}
.preview-bar {
font-size: 7px;
padding: 13px 10px;
height: 36px;
}
.preview-note {
width: 40%;
padding: 14px 9px;
}
.preview-note small {
font-size: 4px;
letter-spacing: 0.5px;
}
.preview-note h3 {
font-size: 12px;
margin: 15px 0 12px;
line-height: 1.65;
}
.preview-note p {
font-size: 6px;
}
.preview-art {
padding: 12px 10px;
height: 145px;
top: 27%;
width: 42%;
}
.preview-art .light-shape {
height: 85px;
}
.preview-art > span {
font-size: 11px;
margin-top: 10px;
}
.preview-sticky {
font-size: 6px;
top: 74%;
padding: 9px;
width: 47%;
left: 38%;
}
.preview-sticky span {
font-size: 20px;
}
.preview-tools {
left: 15%;
font-size: 9px;
padding: 8px 12px;
border-radius: 5px;
}
/* 工具网格改一列并恢复插画一定高度,正文移除最小高度,减少单列多余空白。 */
.tools-section {
padding-top: 50px;
padding-bottom: 50px;
}
.tool-grid {
grid-template-columns: 1fr;
gap: 20px;
}
.tool-card {
padding: 21px;
}
.type-art,
.canvas-art {
height: 260px;
}
.type-art {
font-size: 58px;
}
.type-art i {
font-size: 155px;
}
.type-art > span {
font-size: 35px;
}
.tool-card h3 {
font-size: 22px;
margin-top: 24px;
}
.tool-card p {
min-height: 0;
font-size: 11px;
}
.tool-card .text-link {
font-size: 11px;
margin-top: 18px;
}
/* 灵感网格改一列,每项图片绝对靠左、文字留出 95px,形成紧凑图文行。 */
.ideas-section {
padding: 50px 0;
}
.idea-grid {
grid-template-columns: 1fr;
gap: 28px;
margin-top: 30px;
}
.idea-grid article {
position: relative;
padding-left: 95px;
min-height: 85px;
padding-top: 6px;
}
.idea-grid article img {
position: absolute;
left: 0;
top: 0;
width: 75px;
height: 75px;
}
.idea-grid p {
font-size: 10px;
max-width: none;
}
.idea-grid h3 {
font-size: 15px;
}
/* 工作流改一列,步骤和 FAQ/结尾区间距缩小。 */
.workflow {
grid-template-columns: 1fr;
gap: 20px;
padding-top: 50px;
padding-bottom: 55px;
}
.workflow h2 {
font-size: 28px;
}
.workflow li {
padding: 20px 0;
}
.workflow li h3 {
font-size: 15px;
}
.faq h2 {
font-size: 23px;
line-height: 1.7;
margin-bottom: 23px;
}
.faq-item button {
font-size: 11px;
padding: 20px 0;
}
.faq-item p {
font-size: 10px;
}
.faq {
padding-bottom: 50px;
}
.closing {
padding: 55px 20px;
}
.closing h2 {
font-size: 31px;
}
.closing p {
font-size: 10px;
}
.closing-star {
font-size: 220px;
right: -55px;
top: 45px;
}
.closing .inline-flex {
font-size: 11px;
}
/* 页脚品牌与说明减小字号,其余隐藏状态继续承接上个断点。 */
.site-footer {
padding: 25px 20px;
gap: 14px;
}
.site-footer .brand {
font-size: 12px;
}
.site-footer .brand small {
font-size: 8px;
}
.site-footer p {
font-size: 8px;
}
/* 全局侧栏先隐藏,主区只保留 48px 图标轨;末尾 sidebar-only 例外会恢复侧栏显示。 */
.workspace-sidebar {
display: none;
}
.workspace-main {
margin-left: 48px;
width: calc(100% - 48px);
}
.dashboard .workspace-main {
margin-left: 48px;
width: calc(100% - 48px);
}
.workspace-content {
padding: 30px 18px;
}
/* 头部减高到 55px,隐藏直系图标按钮;欢迎区和快捷创建缩小间距。 */
.workspace-header {
padding: 0 12px;
font-size: 8px;
height: 55px;
gap: 8px;
}
.workspace-header > .icon-button {
display: none;
}
.header-right {
gap: 5px;
}
.workspace-content .eyebrow {
font-size: 6px;
letter-spacing: 0.6px;
}
.welcome-top h1 {
font-size: 22px;
margin-top: 14px;
line-height: 1.6;
max-width: 85%;
}
.welcome-top p {
font-size: 10px;
max-width: 85%;
}
.welcome-spark {
font-size: 37px;
right: -1px;
top: 35px;
}
.quick-create {
margin: 25px 0 35px;
gap: 10px;
}
.quick-create > button h3 {
font-size: 12px;
}
.quick-create > button p {
font-size: 9px;
}
.quick-icon {
width: 35px;
height: 35px;
}
.quick-icon img {
width: 20px !important;
height: 20px !important;
}
.files-heading h2 {
font-size: 16px;
}
.files-heading button {
height: 29px;
}
.file-tabs {
gap: 20px;
margin-bottom: 18px;
font-size: 9px;
}
/* 图谱改单列并增大单卡封面,信息文字和先前隐藏的 ui-icon 恢复为手机卡片尺寸。 */
.board-grid {
grid-template-columns: 1fr;
gap: 18px;
}
.board-cover {
height: 215px;
}
.board-card-info {
padding: 15px;
}
.board-card-info h3 {
font-size: 12px;
}
.board-card-info p {
font-size: 9px;
}
.board-card-info > .ui-icon {
display: block;
}
.cover-title {
font-size: 24px;
}
.cover-0 .light-shape {
height: 135px;
width: 65%;
}
.cover-serif {
font-size: 33px;
}
.cover-2 .cover-serif {
font-size: 27px;
}
.cover-circles {
left: 80px;
top: 25px;
}
.cover-circles span {
width: 100px;
height: 100px;
}
.cover-small {
font-size: 7px;
}
/* 底部提示图/文字收紧,展示画布工具条重新计算偏移并缩小按钮。 */
.workspace-tip {
margin-top: 30px;
padding: 25px 0;
}
.workspace-tip p {
font-size: 9px;
}
.workspace-tip img {
width: 80px;
height: 90px;
right: -5px;
top: 12px;
}
.workspace-tip > span {
font-size: 21px;
}
.canvas-toolbar {
left: calc(50% + 24px);
gap: 0;
}
.canvas-toolbar button {
width: 29px;
}
.canvas-toolbar img {
width: 16px !important;
height: 16px !important;
}
/* 展示舞台改左上变换原点,缩放条改左侧;视口扣除 55px 手机头部高度。 */
.canvas-stage {
transform-origin: 0 0;
}
.canvas-zoom {
top: 66px;
left: 18px;
right: auto;
}
.canvas-floating-title {
font-size: 10px;
}
.canvas-viewport {
height: calc(100dvh - 55px);
}
/* 旧 toast 使用小字与最小宽度,登录表单顶部留白也略作调整。 */
.toast {
font-size: 10px;
min-width: 200px;
text-align: left;
}
.auth-main {
padding-top: 105px;
}
.auth-form-wrap > .eyebrow {
font-size: 7px;
}
}
/* 全局减少动态效果:关闭平滑滚动,并以 important 关闭元素及伪元素的 animation/transition。 */
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*,
*:before,
*:after {
animation: none !important;
transition: none !important;
}
}
/* 链接主色按钮使用浅文字;以下是位于媒体查询之后的后置覆盖,仍按选择器优先级与源码顺序参与层叠。 */
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;
bottom: -7px;
left: 0;
right: 0;
height: 5px;
border-radius: 50%;
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;
letter-spacing: -0.4px;
font-weight: 600;
}
.dialog-description {
font-size: 12px;
line-height: 1.8;
}
/* 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;
}