@topmindspace/tms-skills 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/package.json +1 -1
- package/top-ppt-html/README.en.md +2 -2
- package/top-ppt-html/README.md +1 -1
- package/top-ppt-html/SKILL.md +4 -4
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +24 -12
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +24 -12
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +24 -12
- package/top-ppt-html/assets/examples/2026-09-26-topmind-tms-skills-showcase.html +94 -165
- package/top-ppt-html/assets/examples/2026-09-26-topmind-tms-skills-showcase.model.json +32 -38
- package/top-ppt-html/assets/pptx-export.js +3 -2
- package/top-ppt-html/assets/style-gallery.html +2 -1
- package/top-ppt-html/assets/templates/architecture.html +38 -15
- package/top-ppt-html/assets/templates/engine.css +20 -9
- package/top-ppt-html/assets/templates/presentation.html +38 -17
- package/top-ppt-html/assets/templates/research.html +44 -23
- package/top-ppt-html/package-lock.json +2 -2
- package/top-ppt-html/package.json +1 -1
- package/top-ppt-html/references/components-atoms.md +1 -1
- package/top-ppt-html/references/content-rules.md +17 -11
- package/top-ppt-html/references/failure-modes.md +6 -4
- package/top-ppt-html/references/high-fidelity.md +14 -1
- package/top-ppt-html/references/icons.md +2 -2
- package/top-ppt-html/references/layout-grammar.md +3 -1
- package/top-ppt-html/references/layouts-research.md +1 -1
- package/top-ppt-html/references/pptx-export.md +2 -2
- package/top-ppt-html/references/tech-design.md +2 -0
- package/top-ppt-html/scripts/build_icon_assets.js +92 -0
- package/top-ppt-html/scripts/build_pptx.js +125 -29
- package/top-ppt-html/scripts/extract_model.py +21 -1
- package/top-ppt-html/scripts/icon_lib.js +53 -0
- package/top-ppt-html/scripts/icon_raster.js +86 -0
- package/top-ppt-html/scripts/layout-constants.json +4 -1
- package/top-ppt-html/scripts/lib_layout_regions.js +3 -1
- package/top-ppt-html/scripts/model-schema.json +7 -3
- package/top-ppt-html/scripts/package_skill.py +1 -0
- package/top-ppt-html/scripts/render_from_model.py +125 -24
- package/top-ppt-html/scripts/scaffold_report.py +47 -24
- package/top-ppt-html/scripts/sync_runtime.py +2 -1
- package/top-ppt-html/scripts/validate_pptx.py +14 -3
- package/top-ppt-html/scripts/validate_report.py +1 -1
|
@@ -4,66 +4,51 @@
|
|
|
4
4
|
"theme": "light",
|
|
5
5
|
"title": "TopMind × tms-skills",
|
|
6
6
|
"subtitle": "HTML + PPT 双交付 · 为正式商务演示而生",
|
|
7
|
-
"meta": "产品介绍 · 2026-09-26 · v0.1.
|
|
7
|
+
"meta": "产品介绍 · 2026-09-26 · v0.1.19",
|
|
8
8
|
"agenda": [
|
|
9
9
|
[
|
|
10
10
|
"01",
|
|
11
|
-
"
|
|
11
|
+
"为什么是我们",
|
|
12
12
|
"01 · 为什么是我们"
|
|
13
13
|
],
|
|
14
14
|
[
|
|
15
15
|
"02",
|
|
16
|
-
"tms-skills
|
|
16
|
+
"tms-skills",
|
|
17
17
|
"02 · tms-skills"
|
|
18
18
|
],
|
|
19
19
|
[
|
|
20
20
|
"03",
|
|
21
|
-
"
|
|
21
|
+
"top-ppt-html",
|
|
22
22
|
"03 · top-ppt-html"
|
|
23
23
|
],
|
|
24
24
|
[
|
|
25
25
|
"04",
|
|
26
|
-
"
|
|
26
|
+
"三模式",
|
|
27
27
|
"04 · 三模式"
|
|
28
28
|
],
|
|
29
29
|
[
|
|
30
30
|
"05",
|
|
31
|
-
"
|
|
31
|
+
"图表工艺",
|
|
32
32
|
"05 · 图表工艺"
|
|
33
33
|
],
|
|
34
34
|
[
|
|
35
35
|
"06",
|
|
36
|
-
"
|
|
37
|
-
"05 · 图表工艺"
|
|
38
|
-
],
|
|
39
|
-
[
|
|
40
|
-
"07",
|
|
41
|
-
"九风格开场即可见,亮暗主题一键贯穿",
|
|
36
|
+
"风格主题",
|
|
42
37
|
"06 · 风格主题"
|
|
43
38
|
],
|
|
44
39
|
[
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"07 · 质量门禁"
|
|
48
|
-
],
|
|
49
|
-
[
|
|
50
|
-
"09",
|
|
51
|
-
"从想法到上台:工艺链路如何把主张垫实",
|
|
40
|
+
"07",
|
|
41
|
+
"质量门禁",
|
|
52
42
|
"07 · 质量门禁"
|
|
53
43
|
],
|
|
54
44
|
[
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"05 · 图表工艺"
|
|
58
|
-
],
|
|
59
|
-
[
|
|
60
|
-
"11",
|
|
61
|
-
"打开 HTML 即演示:顶栏快捷操作一览",
|
|
45
|
+
"08",
|
|
46
|
+
"Header 工具栏",
|
|
62
47
|
"08 · Header 工具栏"
|
|
63
48
|
],
|
|
64
49
|
[
|
|
65
|
-
"
|
|
66
|
-
"Fast Mode
|
|
50
|
+
"09",
|
|
51
|
+
"Fast Mode",
|
|
67
52
|
"09 · Fast Mode"
|
|
68
53
|
]
|
|
69
54
|
],
|
|
@@ -86,7 +71,8 @@
|
|
|
86
71
|
"一屏一主张",
|
|
87
72
|
"标题即行动句,少装饰堆砌"
|
|
88
73
|
]
|
|
89
|
-
]
|
|
74
|
+
],
|
|
75
|
+
"icon": "增长"
|
|
90
76
|
},
|
|
91
77
|
{
|
|
92
78
|
"title": "HTML + PPT 双交付",
|
|
@@ -99,7 +85,8 @@
|
|
|
99
85
|
"PPTX 按需导出",
|
|
100
86
|
"版式保真、可继续编辑"
|
|
101
87
|
]
|
|
102
|
-
]
|
|
88
|
+
],
|
|
89
|
+
"icon": "下降"
|
|
103
90
|
},
|
|
104
91
|
{
|
|
105
92
|
"title": "MD3 式克制",
|
|
@@ -112,7 +99,8 @@
|
|
|
112
99
|
"无 AI chrome",
|
|
113
100
|
"结论条 tonal 满铺,禁左侧装饰轨"
|
|
114
101
|
]
|
|
115
|
-
]
|
|
102
|
+
],
|
|
103
|
+
"icon": "数据"
|
|
116
104
|
}
|
|
117
105
|
],
|
|
118
106
|
"soWhat": "产出即上台:同源模型保证 HTML 与 PPTX 一致,图表带数据可核对。"
|
|
@@ -135,7 +123,8 @@
|
|
|
135
123
|
"同 tag 发版",
|
|
136
124
|
"安装器与技能整仓对齐"
|
|
137
125
|
]
|
|
138
|
-
]
|
|
126
|
+
],
|
|
127
|
+
"icon": "增长"
|
|
139
128
|
},
|
|
140
129
|
{
|
|
141
130
|
"title": "双通道安装",
|
|
@@ -148,7 +137,8 @@
|
|
|
148
137
|
"GitHub 跟 HEAD",
|
|
149
138
|
"日常可 clone / 直装"
|
|
150
139
|
]
|
|
151
|
-
]
|
|
140
|
+
],
|
|
141
|
+
"icon": "下降"
|
|
152
142
|
},
|
|
153
143
|
{
|
|
154
144
|
"title": "当前主技能",
|
|
@@ -161,10 +151,11 @@
|
|
|
161
151
|
"HTML + PPTX",
|
|
162
152
|
"同源模型 · 双交付"
|
|
163
153
|
]
|
|
164
|
-
]
|
|
154
|
+
],
|
|
155
|
+
"icon": "数据"
|
|
165
156
|
}
|
|
166
157
|
],
|
|
167
|
-
"footnote": "包名 @topmindspace/tms-skills · 当前线 0.1.
|
|
158
|
+
"footnote": "包名 @topmindspace/tms-skills · 当前线 0.1.19(latest)",
|
|
168
159
|
"soWhat": "安装器与技能同仓同 tag——装一次,版本线对齐。"
|
|
169
160
|
},
|
|
170
161
|
{
|
|
@@ -227,7 +218,8 @@
|
|
|
227
218
|
"大气留白",
|
|
228
219
|
"证据充分但不堆咨询 dump"
|
|
229
220
|
]
|
|
230
|
-
]
|
|
221
|
+
],
|
|
222
|
+
"icon": "增长"
|
|
231
223
|
},
|
|
232
224
|
{
|
|
233
225
|
"title": "B · 研究",
|
|
@@ -240,7 +232,8 @@
|
|
|
240
232
|
"结论可核对",
|
|
241
233
|
"数字与口径双向对齐"
|
|
242
234
|
]
|
|
243
|
-
]
|
|
235
|
+
],
|
|
236
|
+
"icon": "下降"
|
|
244
237
|
},
|
|
245
238
|
{
|
|
246
239
|
"title": "C · 架构",
|
|
@@ -253,7 +246,8 @@
|
|
|
253
246
|
"少字多结构",
|
|
254
247
|
"一图说清关系"
|
|
255
248
|
]
|
|
256
|
-
]
|
|
249
|
+
],
|
|
250
|
+
"icon": "数据"
|
|
257
251
|
}
|
|
258
252
|
],
|
|
259
253
|
"footnote": "意图线索:路演/汇报/演讲 → A;调研/对标 → B;拓扑/方案图 → C",
|
|
@@ -121,7 +121,8 @@ function regionOf(pageType, slotId, opts) {
|
|
|
121
121
|
if (type === 'bar' && slot === 'primary') {
|
|
122
122
|
var by = P.chartY || 2.95;
|
|
123
123
|
var bb = opts.bottom != null ? opts.bottom : bottomDefault;
|
|
124
|
-
|
|
124
|
+
/* chartX/chartW 历史误用已纠正:与 donut/table/hbar/exhibit 同口径,图表盒对齐版心 (MX, CW) */
|
|
125
|
+
return { x: MX, y: by, w: CW, h: Math.max(1.2, bb - by) };
|
|
125
126
|
}
|
|
126
127
|
if (type === 'bar' && slot === 'hbar') {
|
|
127
128
|
var y0 = P.hbarY0 || 2.6;
|
|
@@ -233,7 +234,7 @@ function regionOf(pageType, slotId, opts) {
|
|
|
233
234
|
/* __TOPPPT_SCHEMA_START__ */
|
|
234
235
|
/* ── 由 scripts/sync_runtime.py 从 scripts/model-schema.json 注入 · 禁止手改 ── */
|
|
235
236
|
/* DSL schema 单源:浏览器端 validateModel 与 scripts/extract_model.py 消费同一份定义 */
|
|
236
|
-
var MODEL_SCHEMA = {"version":"0.1","modes":["presentation","research","architecture"],"model":{"required":["title","sections:array","closing.title","closing.points:array"],"optional":["mode","style","theme","subtitle","meta","agenda:array"],"agendaMin":{"presentation":3,"research":3,"architecture":0},"sectionsMin":1,"sectionsRecommended":3,"agendaComfortMax":
|
|
237
|
+
var MODEL_SCHEMA = {"version":"0.1","modes":["presentation","research","architecture"],"model":{"required":["title","sections:array","closing.title","closing.points:array"],"optional":["mode","style","theme","subtitle","meta","agenda:array"],"agendaMin":{"presentation":3,"research":3,"architecture":0},"agendaMax":7,"agendaMaxWithRefs":8,"agendaHint":"agenda 条目 = 章(篇/section),3–7 条;每章可含多页(sections[] 按页建模)。禁止把逐页标题当大纲。sections[].eyebrow 的 `NN ·` 前缀 = 章键,须与某条 agenda 对应;跳转锚点 = 该章第一页。含「参考资料」条目时 +1 仍 ≤8。","sectionsMin":1,"sectionsRecommended":3,"agendaComfortMax":8},"commonSectionFields":["eyebrow","title","lead","soWhat","footnote","flags","image","exhibitNo","layoutPreset"],"mutualExclusionHint":"verdict 与 soWhat 互斥:二者共用 annotation 结论条槽位,同页双填必叠印。comparison 页填 verdict 时不要再填 soWhat(渲染器已自动二选一,但模型侧应只给一个)。","flagsHint":"flags = 待核实/待二次修改条目字符串数组(如 '2027 增速 xx%(口径未定)');渲染为 accent 强调色标注行,提示用户核对。","imageHint":"image = 素材图片/配图占位对象。三选一必填:src(用户图,data: 内联或相对路径,零外链铁律禁 http(s))|items(多图版式:grid/compare/wall,元素 {src?, alt?, caption?, placeholder?})|placeholder:true(无图时出配图占位,原生形状渲染、pictures 不增)。其余可选:layout(full/half/bleed/grid/compare/wall,见 layout-constants.json imageSpec.layouts)、fit(cover 默认 / contain)、caption、alt、hint、ratio。","imageLayoutHint":"layout 与 HTML 版式对应:full=版心全宽图|half=左图右注(points 为右栏注解)|bleed=通栏出血|grid=多图网格(items 2/3/4/6 张)|compare=双图 A/B 对比(items 2 张)|wall=Logo 墙(items 3–12 张小图)。占位符标签文本由双引擎按 imageSpec 拼同一串,保证 A/B 通道逐页文本一致。","chartTypes":["bar","hbar","stack","stackline","line","dualline","area","donut","multidonut","pie","radar","scatter","bubble","waterfall","gauge","pareto","funnel","gantt","vsbar","progress","sparkline","slope","dumbbell","lollipop","dotplot","bulletchart","waffle","radialbar","rose","candlestick"],"chartTypesHint":"chart.type 可取值 = 本表(30 类:16 原生 + 14 形状还原)。其余 6 类复杂信息图(sankey/treemap/boxplot/network/marimekko/streamgraph)是**专属页型**而非 chart.type——它们要按列/段/节点等结构化载荷表达,故走 sections[].type。不变量:charts.registry.types == chartTypes ∪ 上述 6 类页型(sync_runtime.py 校验)。","chartDataTable":{"enum":["notes","inline","appendix","off"],"default":"notes","rule":"非原生图表(registry.pptx=shape)的 dataTable 不得为 off;缺失时按 registry 默认值补齐。"},"pageTypes":{"points":{"label":"要点列表页","modes":["presentation","research","architecture"],"required":["points:array"],"optional":["metrics:array"]},"metrics":{"label":"指标带页(4–6 个核心数字)","modes":["presentation","research"],"required":["metrics:array"]},"kpi":{"label":"大数指标页(hero 大数字 + 支撑指标行)","modes":["presentation","research"],"required":["hero:array"],"optional":["metrics:array"]},"table":{"label":"对比表页","modes":["presentation","research","architecture"],"required":["table.head:array","table.rows:array"],"optional":["table.colW:array"]},"timeline":{"label":"时间线 / 路线页","modes":["presentation","research"],"required":["phases:array"]},"steps":{"label":"步骤条页(N 步横排 + 箭头,可分组)","modes":["presentation","research","architecture"],"required":["steps:array"],"optional":["groups:array","note"]},"bar":{"label":"图表页(chart.type 见 chartTypes;native 通道走原生数据图表,shape 通道走高保真形状还原 + 数据表)","modes":["presentation","research"],"required":["chart.labels:array","chart.values:array"],"optional":["chart.type","chart.series:array","chart.points:array","chart.max","chart.unit","chart.colors:array","chart.start:array","chart.target:array","chart.dataTable","note"]},"donut":{"label":"环形图页(原生 pie 楔形 + 图例)","modes":["presentation","research"],"required":["chart.labels:array","chart.values:array"],"optional":["chart.unit","chart.centerLabel","chart.colors:array","chart.dataTable","note"]},"heatmap":{"label":"热力矩阵页(行 × 列 + 强度色阶)","modes":["presentation","research"],"required":["rowHeads:array","colHeads:array","cells:array"],"optional":["unit","scaleLabel:array","note"]},"bullet":{"label":"达成对比页(实际 vs 目标条)","modes":["presentation","research"],"required":["items:array"],"optional":["unit","max","note"]},"pyramid":{"label":"金字塔页(层级递进,顶层最窄)","modes":["presentation","research","architecture"],"required":["levels:array"],"optional":["note"]},"image":{"label":"素材图片页(full/half/bleed/grid/compare/wall,效果与位置锁定;支持配图占位)","modes":["presentation","research","architecture"],"required":["anyof:image.src:str|image.items:array|image.placeholder"],"optional":["image.caption","image.alt","image.layout","image.fit","image.ratio","image.hint","points:array","note"]},"cards":{"label":"卡片网格页(cards 元素须为 {title, points:[[k,v]…], icon?},不接受元组)","modes":["presentation","research"],"required":["cards:array"],"optional":["columns"],"cardItemHint":"cards[] 元素:{title:str, points:[[k,v]…]|[{t,d}…]|[str…], icon?:str}。icon = 语义图标名(icon_lib.js 键:增长/下降/数据/图表/趋势/占比/表格/效率/成果/安全/权限/检查/风险/团队/流程/计划/智能/洞察/工具/清单),HTML 与 PPTX 同名真导出;缺省按标题语义自动挑选。"},"split":{"label":"双区组合页(left / right 各可为 要点|图表|表格|图片:type = points(默认)| table | image | 图表类型名;图表/表格字段直接挂在对应侧)","modes":["presentation","research"],"required":["anyof:left.points:array|left.type:str"],"optional":["left.cap","left.image","left.labels:array","left.values:array","left.series:array","left.points:array","left.max","left.unit","left.colors:array","left.dataTable","left.head:array","left.rows:array","left.colW:array","right.type","right.cap","right.image","right.labels:array","right.values:array","right.series:array","right.points:array","right.max","right.unit","right.colors:array","right.dataTable","right.head:array","right.rows:array","right.colW:array"]},"comparison":{"label":"对比页(左右双栏 + 可选结论条)","modes":["presentation","research"],"required":["left.title","left.points:array","right.title","right.points:array"],"optional":["verdict"]},"quote":{"label":"引用 / 金句页(深色全幅)","modes":["presentation","research"],"required":["quote","author"],"optional":["context"]},"diagram":{"label":"分层架构页(architecture 模式走全幅几何)","modes":["presentation","research","architecture"],"required":["layers:array"],"optional":["legend:array"]},"exhibit":{"label":"Exhibit 编号图表页(research R2)","modes":["research"],"required":["chart.labels:array","chart.values:array"],"optional":["exhibitNo","chart.type","chart.series:array","chart.points:array","chart.max","chart.unit","chart.colors:array","chart.dataTable","note"]},"twocol":{"label":"双栏论证页(research R1)","modes":["research"],"required":["paragraphs:array"]},"threecol":{"label":"三栏证据页(research R6)","modes":["research"],"required":["paragraphs:array"]},"halftable":{"label":"半表半图页(research R7)","modes":["research"],"required":["table.head:array","table.rows:array","chart.labels:array","chart.values:array"],"optional":["table.colW:array","chart.type","chart.series:array","chart.points:array","chart.max","chart.unit","chart.colors:array","chart.dataTable","note"]},"matrix":{"label":"矩阵图页(research R8)","modes":["research"],"required":["rowHeads:array","colHeads:array","cells:array"]},"lane":{"label":"泳道页(architecture A2)","modes":["architecture"],"required":["lanes:array"]},"sankey":{"label":"桑基图页(节点-流带,流向与流量)","modes":["research","architecture"],"required":["flows:array"],"optional":["unit","chart.dataTable","note"]},"treemap":{"label":"树图页(面积编码的层级构成)","modes":["research","architecture"],"required":["items:array"],"optional":["unit","chart.dataTable","note"]},"boxplot":{"label":"箱线图页(分布对比:min/q1/median/q3/max)","modes":["research","architecture"],"required":["groups:array"],"optional":["unit","chart.dataTable","note"]},"network":{"label":"关系网络页(节点-边拓扑)","modes":["research","architecture"],"required":["nodes:array","edges:array"],"optional":["chart.dataTable","note"]},"marimekko":{"label":"马赛克图页(列宽 × 列高双重编码)","modes":["research","architecture"],"required":["cols:array","cells:array"],"optional":["unit","chart.dataTable","note"]},"streamgraph":{"label":"流带图页(时间上的构成演变)","modes":["research","architecture"],"required":["series:array"],"optional":["labels:array","chart.dataTable","note"]}}};
|
|
237
238
|
/* __TOPPPT_SCHEMA_END__ */
|
|
238
239
|
|
|
239
240
|
var _mode = 'presentation'; /* 当前模式(slidesOf 里按 model.mode 设置) */
|
|
@@ -249,7 +249,8 @@ function regionOf(pageType, slotId, opts) {
|
|
|
249
249
|
if (type === 'bar' && slot === 'primary') {
|
|
250
250
|
var by = P.chartY || 2.95;
|
|
251
251
|
var bb = opts.bottom != null ? opts.bottom : bottomDefault;
|
|
252
|
-
|
|
252
|
+
/* chartX/chartW 历史误用已纠正:与 donut/table/hbar/exhibit 同口径,图表盒对齐版心 (MX, CW) */
|
|
253
|
+
return { x: MX, y: by, w: CW, h: Math.max(1.2, bb - by) };
|
|
253
254
|
}
|
|
254
255
|
if (type === 'bar' && slot === 'hbar') {
|
|
255
256
|
var y0 = P.hbarY0 || 2.6;
|
|
@@ -332,7 +332,13 @@ border-color:color-mix(in srgb,var(--accent-on) 20%,transparent);color:var(--acc
|
|
|
332
332
|
rows-2 / rows-3:等高行分区(纵向节奏,替代等高卡片堆叠) */
|
|
333
333
|
.g-211{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr)}
|
|
334
334
|
.g-121{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr)}
|
|
335
|
-
.g-quad{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(
|
|
335
|
+
.g-quad{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(min-content,1fr);align-items:stretch}
|
|
336
|
+
.g-half{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:stretch}
|
|
337
|
+
@media (max-width:1180px){.g-half{grid-template-columns:1fr}}
|
|
338
|
+
.g-2--equal,.g-3--equal,.g-4--equal{grid-auto-rows:minmax(min-content,1fr);align-items:stretch}
|
|
339
|
+
.grid.g-2>.card,.grid.g-3>.card,.grid.g-4>.card,
|
|
340
|
+
.grid.g-quad>.card,.grid.g-half>.card,.grid.g-2--equal>.card,
|
|
341
|
+
.grid.g-3--equal>.card,.grid.g-4--equal>.card{align-self:stretch}
|
|
336
342
|
.g-aside{grid-template-columns:minmax(0,1fr) minmax(200px,.36fr);align-items:start}
|
|
337
343
|
.g-aside__side{position:sticky;top:calc(var(--bar-h) + 16px)}
|
|
338
344
|
.g-mosaic{grid-template-columns:repeat(3,minmax(0,1fr));
|
|
@@ -348,7 +354,7 @@ grid-template-areas:"main main main" "s1 s2 s3"}
|
|
|
348
354
|
.kv--2col{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr)}
|
|
349
355
|
/* ── 拼贴栅格 g-bento(Bento / 马赛克):4 列基准 + 跨列/跨行工具类 ──
|
|
350
356
|
.sp-2/.sp-3/.sp-4 跨列(span),.rw-2 跨行;窄屏自动降列并收敛 span。 */
|
|
351
|
-
.g-bento{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(
|
|
357
|
+
.g-bento{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(min-content,1fr)}
|
|
352
358
|
.sp-2{grid-column:span 2}.sp-3{grid-column:span 3}.sp-4{grid-column:span 4}
|
|
353
359
|
.rw-2{grid-row:span 2}
|
|
354
360
|
@media (max-width:1180px){.g-bento{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
@@ -383,19 +389,21 @@ background:color-mix(in srgb,var(--bg) 86%,transparent);
|
|
|
383
389
|
backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);
|
|
384
390
|
border-bottom:1px solid var(--border-soft);
|
|
385
391
|
transition:height var(--dur-medium) var(--ease-standard)}
|
|
386
|
-
.bar__in{height:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}
|
|
387
|
-
.brand{display:flex;align-items:center;gap:var(--sp-3);min-width:0}
|
|
392
|
+
.bar__in{height:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);overflow:hidden}
|
|
393
|
+
.brand{display:flex;align-items:center;gap:var(--sp-3);min-width:0;flex:1 1 auto;overflow:hidden}
|
|
388
394
|
.brand__mark{width:34px;height:34px;flex:none;border-radius:10px;background:var(--accent);
|
|
389
395
|
color:var(--accent-on);display:grid;place-items:center;font-size:13px;font-weight:700}
|
|
396
|
+
.brand__txt{min-width:0;overflow:hidden;flex:1 1 auto}
|
|
390
397
|
.brand__title{font-size:var(--fs-sm);font-weight:600;color:var(--text);white-space:nowrap;
|
|
391
|
-
overflow:hidden;text-overflow:ellipsis}
|
|
398
|
+
overflow:hidden;text-overflow:ellipsis;max-width:100%}
|
|
392
399
|
.brand__sub{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap;overflow:hidden;
|
|
393
|
-
text-overflow:ellipsis}
|
|
394
|
-
.nav{display:flex;align-items:center;gap:var(--sp-1)}
|
|
400
|
+
text-overflow:ellipsis;max-width:100%}
|
|
401
|
+
.nav{display:flex;align-items:center;gap:var(--sp-1);flex:0 1 auto;min-width:0;overflow:hidden}
|
|
395
402
|
.nav a{padding:8px 14px;border-radius:var(--r-full);color:var(--text-2);text-decoration:none;
|
|
396
403
|
font-size:var(--fs-sm);font-weight:500;white-space:nowrap;transition:background-color var(--dur-short),color var(--dur-short)}
|
|
397
404
|
.nav a:hover{background:var(--surface-2);color:var(--text)}
|
|
398
405
|
@media (max-width:1180px){.nav{display:none}}
|
|
406
|
+
@media (max-width:1360px){.brand__sub{display:none}}
|
|
399
407
|
.iconbtn{width:40px;height:40px;flex:none;display:grid;place-items:center;
|
|
400
408
|
border:1px solid var(--border);border-radius:var(--r-full);background:transparent;
|
|
401
409
|
color:var(--text-2);cursor:pointer;transition:background-color var(--dur-short),color var(--dur-short)}
|
|
@@ -450,12 +458,15 @@ transition:background-color var(--dur-short),box-shadow var(--dur-short),transfo
|
|
|
450
458
|
.btn--ghost{background:transparent;color:var(--text);border-color:var(--border)}
|
|
451
459
|
.btn--onDark{background:var(--surface);color:var(--text)}
|
|
452
460
|
.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);
|
|
453
|
-
padding:clamp(20px,2vw,30px);transition:border-color var(--dur-short),box-shadow var(--dur-short),background-color var(--dur-medium)
|
|
461
|
+
padding:clamp(20px,2vw,30px);transition:border-color var(--dur-short),box-shadow var(--dur-short),background-color var(--dur-medium);
|
|
462
|
+
display:flex;flex-direction:column;min-width:0}
|
|
454
463
|
.card:hover{border-color:var(--border);box-shadow:var(--shadow-1)}
|
|
455
464
|
.card--flat{background:var(--surface-1);border-color:transparent}
|
|
456
465
|
.card--flat:hover{background:var(--surface-2)}
|
|
457
466
|
.card--accent{background:var(--accent-soft);border-color:transparent}
|
|
458
|
-
.card__hd{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
|
|
467
|
+
.card__hd{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);flex:none}
|
|
468
|
+
.card>.ul,.card>.t-body,.card>.t-sm{flex:1 1 auto}
|
|
469
|
+
.card>.so-what,.card>.tbd-legend,.card>.flagbar{flex:none;margin-top:auto}
|
|
459
470
|
.card__ico{width:34px;height:34px;flex:none;border-radius:10px;background:var(--accent-soft);
|
|
460
471
|
color:var(--accent-text);display:grid;place-items:center;font-size:15px;font-weight:600}
|
|
461
472
|
.card__ico svg{width:18px;height:18px}
|
|
@@ -1136,7 +1147,8 @@ font-weight:600}
|
|
|
1136
1147
|
</div>
|
|
1137
1148
|
</section>
|
|
1138
1149
|
|
|
1139
|
-
<!-- ══
|
|
1150
|
+
<!-- ══ 参考资料(只列真实来源;无真实来源时整节删除,并去掉正文 cite 与导航入口) ══ -->
|
|
1151
|
+
<!-- 示例条目(交付时替换为真实机构/报告/文档名,禁止「来源名称」占位串):
|
|
1140
1152
|
<section class="band band--tint" id="refs">
|
|
1141
1153
|
<div class="wrap">
|
|
1142
1154
|
<div class="shead rv">
|
|
@@ -1149,14 +1161,24 @@ font-weight:600}
|
|
|
1149
1161
|
<th style="width:14%">时间</th><th>口径说明</th></tr></thead>
|
|
1150
1162
|
<tbody>
|
|
1151
1163
|
<tr id="ref-1"><td class="k">[1]</td>
|
|
1152
|
-
<td><a class="ref-link" href="https://
|
|
1164
|
+
<td><a class="ref-link" href="https://www.nist.gov" target="_blank" rel="noopener">NIST AI Risk Management Framework
|
|
1153
1165
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><path d="M15 3h6v6M10 14 21 3"/></svg></a></td>
|
|
1154
|
-
<td>
|
|
1166
|
+
<td>2024-07</td><td>智能体安全控制项映射</td></tr>
|
|
1155
1167
|
</tbody>
|
|
1156
1168
|
</table>
|
|
1157
1169
|
</div>
|
|
1158
1170
|
</div>
|
|
1159
1171
|
</section>
|
|
1172
|
+
-->
|
|
1173
|
+
<section class="band band--tint" id="refs" hidden data-ref-policy="real-sources-only">
|
|
1174
|
+
<div class="wrap">
|
|
1175
|
+
<div class="shead rv">
|
|
1176
|
+
<div class="t-eyebrow">参考资料</div>
|
|
1177
|
+
<h2 class="t-h1 shead__title">依据与口径说明</h2>
|
|
1178
|
+
</div>
|
|
1179
|
+
<p class="t-body rv">(占位节:交付前填入真实来源条目,或整节删除并去掉正文 cite 与导航「参考资料」入口。禁止「来源名称,时间;口径。」占位条目。)</p>
|
|
1180
|
+
</div>
|
|
1181
|
+
</section>
|
|
1160
1182
|
|
|
1161
1183
|
<!-- ══ 页脚 ══ -->
|
|
1162
1184
|
<footer class="foot">
|
|
@@ -1796,7 +1818,7 @@ window.REPORT_MODEL = {
|
|
|
1796
1818
|
|
|
1797
1819
|
/* __TOPPPT_RUNTIME_START__ */
|
|
1798
1820
|
/* ══ PPTX 导出运行时(assets/pptx-export.js 的内联副本 · 由 scripts/sync_runtime.py 注入,禁止手改) ══ */
|
|
1799
|
-
/* __TOPPPT_RUNTIME_SHA__:
|
|
1821
|
+
/* __TOPPPT_RUNTIME_SHA__:af6e25f25fd2e116 */
|
|
1800
1822
|
/* ═══════════════════════════════════════════════════════════════════════════
|
|
1801
1823
|
* TopPPT HTML· 浏览器端 PPTX 预览运行时
|
|
1802
1824
|
* 零依赖、随报告单文件分发;OOXML 序列化器(仅供预览,页面不导出文件)。
|
|
@@ -1920,7 +1942,8 @@ function regionOf(pageType, slotId, opts) {
|
|
|
1920
1942
|
if (type === 'bar' && slot === 'primary') {
|
|
1921
1943
|
var by = P.chartY || 2.95;
|
|
1922
1944
|
var bb = opts.bottom != null ? opts.bottom : bottomDefault;
|
|
1923
|
-
|
|
1945
|
+
/* chartX/chartW 历史误用已纠正:与 donut/table/hbar/exhibit 同口径,图表盒对齐版心 (MX, CW) */
|
|
1946
|
+
return { x: MX, y: by, w: CW, h: Math.max(1.2, bb - by) };
|
|
1924
1947
|
}
|
|
1925
1948
|
if (type === 'bar' && slot === 'hbar') {
|
|
1926
1949
|
var y0 = P.hbarY0 || 2.6;
|
|
@@ -2032,7 +2055,7 @@ function regionOf(pageType, slotId, opts) {
|
|
|
2032
2055
|
/* __TOPPPT_SCHEMA_START__ */
|
|
2033
2056
|
/* ── 由 scripts/sync_runtime.py 从 scripts/model-schema.json 注入 · 禁止手改 ── */
|
|
2034
2057
|
/* DSL schema 单源:浏览器端 validateModel 与 scripts/extract_model.py 消费同一份定义 */
|
|
2035
|
-
var MODEL_SCHEMA = {"version":"0.1","modes":["presentation","research","architecture"],"model":{"required":["title","sections:array","closing.title","closing.points:array"],"optional":["mode","style","theme","subtitle","meta","agenda:array"],"agendaMin":{"presentation":3,"research":3,"architecture":0},"sectionsMin":1,"sectionsRecommended":3,"agendaComfortMax":
|
|
2058
|
+
var MODEL_SCHEMA = {"version":"0.1","modes":["presentation","research","architecture"],"model":{"required":["title","sections:array","closing.title","closing.points:array"],"optional":["mode","style","theme","subtitle","meta","agenda:array"],"agendaMin":{"presentation":3,"research":3,"architecture":0},"agendaMax":7,"agendaMaxWithRefs":8,"agendaHint":"agenda 条目 = 章(篇/section),3–7 条;每章可含多页(sections[] 按页建模)。禁止把逐页标题当大纲。sections[].eyebrow 的 `NN ·` 前缀 = 章键,须与某条 agenda 对应;跳转锚点 = 该章第一页。含「参考资料」条目时 +1 仍 ≤8。","sectionsMin":1,"sectionsRecommended":3,"agendaComfortMax":8},"commonSectionFields":["eyebrow","title","lead","soWhat","footnote","flags","image","exhibitNo","layoutPreset"],"mutualExclusionHint":"verdict 与 soWhat 互斥:二者共用 annotation 结论条槽位,同页双填必叠印。comparison 页填 verdict 时不要再填 soWhat(渲染器已自动二选一,但模型侧应只给一个)。","flagsHint":"flags = 待核实/待二次修改条目字符串数组(如 '2027 增速 xx%(口径未定)');渲染为 accent 强调色标注行,提示用户核对。","imageHint":"image = 素材图片/配图占位对象。三选一必填:src(用户图,data: 内联或相对路径,零外链铁律禁 http(s))|items(多图版式:grid/compare/wall,元素 {src?, alt?, caption?, placeholder?})|placeholder:true(无图时出配图占位,原生形状渲染、pictures 不增)。其余可选:layout(full/half/bleed/grid/compare/wall,见 layout-constants.json imageSpec.layouts)、fit(cover 默认 / contain)、caption、alt、hint、ratio。","imageLayoutHint":"layout 与 HTML 版式对应:full=版心全宽图|half=左图右注(points 为右栏注解)|bleed=通栏出血|grid=多图网格(items 2/3/4/6 张)|compare=双图 A/B 对比(items 2 张)|wall=Logo 墙(items 3–12 张小图)。占位符标签文本由双引擎按 imageSpec 拼同一串,保证 A/B 通道逐页文本一致。","chartTypes":["bar","hbar","stack","stackline","line","dualline","area","donut","multidonut","pie","radar","scatter","bubble","waterfall","gauge","pareto","funnel","gantt","vsbar","progress","sparkline","slope","dumbbell","lollipop","dotplot","bulletchart","waffle","radialbar","rose","candlestick"],"chartTypesHint":"chart.type 可取值 = 本表(30 类:16 原生 + 14 形状还原)。其余 6 类复杂信息图(sankey/treemap/boxplot/network/marimekko/streamgraph)是**专属页型**而非 chart.type——它们要按列/段/节点等结构化载荷表达,故走 sections[].type。不变量:charts.registry.types == chartTypes ∪ 上述 6 类页型(sync_runtime.py 校验)。","chartDataTable":{"enum":["notes","inline","appendix","off"],"default":"notes","rule":"非原生图表(registry.pptx=shape)的 dataTable 不得为 off;缺失时按 registry 默认值补齐。"},"pageTypes":{"points":{"label":"要点列表页","modes":["presentation","research","architecture"],"required":["points:array"],"optional":["metrics:array"]},"metrics":{"label":"指标带页(4–6 个核心数字)","modes":["presentation","research"],"required":["metrics:array"]},"kpi":{"label":"大数指标页(hero 大数字 + 支撑指标行)","modes":["presentation","research"],"required":["hero:array"],"optional":["metrics:array"]},"table":{"label":"对比表页","modes":["presentation","research","architecture"],"required":["table.head:array","table.rows:array"],"optional":["table.colW:array"]},"timeline":{"label":"时间线 / 路线页","modes":["presentation","research"],"required":["phases:array"]},"steps":{"label":"步骤条页(N 步横排 + 箭头,可分组)","modes":["presentation","research","architecture"],"required":["steps:array"],"optional":["groups:array","note"]},"bar":{"label":"图表页(chart.type 见 chartTypes;native 通道走原生数据图表,shape 通道走高保真形状还原 + 数据表)","modes":["presentation","research"],"required":["chart.labels:array","chart.values:array"],"optional":["chart.type","chart.series:array","chart.points:array","chart.max","chart.unit","chart.colors:array","chart.start:array","chart.target:array","chart.dataTable","note"]},"donut":{"label":"环形图页(原生 pie 楔形 + 图例)","modes":["presentation","research"],"required":["chart.labels:array","chart.values:array"],"optional":["chart.unit","chart.centerLabel","chart.colors:array","chart.dataTable","note"]},"heatmap":{"label":"热力矩阵页(行 × 列 + 强度色阶)","modes":["presentation","research"],"required":["rowHeads:array","colHeads:array","cells:array"],"optional":["unit","scaleLabel:array","note"]},"bullet":{"label":"达成对比页(实际 vs 目标条)","modes":["presentation","research"],"required":["items:array"],"optional":["unit","max","note"]},"pyramid":{"label":"金字塔页(层级递进,顶层最窄)","modes":["presentation","research","architecture"],"required":["levels:array"],"optional":["note"]},"image":{"label":"素材图片页(full/half/bleed/grid/compare/wall,效果与位置锁定;支持配图占位)","modes":["presentation","research","architecture"],"required":["anyof:image.src:str|image.items:array|image.placeholder"],"optional":["image.caption","image.alt","image.layout","image.fit","image.ratio","image.hint","points:array","note"]},"cards":{"label":"卡片网格页(cards 元素须为 {title, points:[[k,v]…], icon?},不接受元组)","modes":["presentation","research"],"required":["cards:array"],"optional":["columns"],"cardItemHint":"cards[] 元素:{title:str, points:[[k,v]…]|[{t,d}…]|[str…], icon?:str}。icon = 语义图标名(icon_lib.js 键:增长/下降/数据/图表/趋势/占比/表格/效率/成果/安全/权限/检查/风险/团队/流程/计划/智能/洞察/工具/清单),HTML 与 PPTX 同名真导出;缺省按标题语义自动挑选。"},"split":{"label":"双区组合页(left / right 各可为 要点|图表|表格|图片:type = points(默认)| table | image | 图表类型名;图表/表格字段直接挂在对应侧)","modes":["presentation","research"],"required":["anyof:left.points:array|left.type:str"],"optional":["left.cap","left.image","left.labels:array","left.values:array","left.series:array","left.points:array","left.max","left.unit","left.colors:array","left.dataTable","left.head:array","left.rows:array","left.colW:array","right.type","right.cap","right.image","right.labels:array","right.values:array","right.series:array","right.points:array","right.max","right.unit","right.colors:array","right.dataTable","right.head:array","right.rows:array","right.colW:array"]},"comparison":{"label":"对比页(左右双栏 + 可选结论条)","modes":["presentation","research"],"required":["left.title","left.points:array","right.title","right.points:array"],"optional":["verdict"]},"quote":{"label":"引用 / 金句页(深色全幅)","modes":["presentation","research"],"required":["quote","author"],"optional":["context"]},"diagram":{"label":"分层架构页(architecture 模式走全幅几何)","modes":["presentation","research","architecture"],"required":["layers:array"],"optional":["legend:array"]},"exhibit":{"label":"Exhibit 编号图表页(research R2)","modes":["research"],"required":["chart.labels:array","chart.values:array"],"optional":["exhibitNo","chart.type","chart.series:array","chart.points:array","chart.max","chart.unit","chart.colors:array","chart.dataTable","note"]},"twocol":{"label":"双栏论证页(research R1)","modes":["research"],"required":["paragraphs:array"]},"threecol":{"label":"三栏证据页(research R6)","modes":["research"],"required":["paragraphs:array"]},"halftable":{"label":"半表半图页(research R7)","modes":["research"],"required":["table.head:array","table.rows:array","chart.labels:array","chart.values:array"],"optional":["table.colW:array","chart.type","chart.series:array","chart.points:array","chart.max","chart.unit","chart.colors:array","chart.dataTable","note"]},"matrix":{"label":"矩阵图页(research R8)","modes":["research"],"required":["rowHeads:array","colHeads:array","cells:array"]},"lane":{"label":"泳道页(architecture A2)","modes":["architecture"],"required":["lanes:array"]},"sankey":{"label":"桑基图页(节点-流带,流向与流量)","modes":["research","architecture"],"required":["flows:array"],"optional":["unit","chart.dataTable","note"]},"treemap":{"label":"树图页(面积编码的层级构成)","modes":["research","architecture"],"required":["items:array"],"optional":["unit","chart.dataTable","note"]},"boxplot":{"label":"箱线图页(分布对比:min/q1/median/q3/max)","modes":["research","architecture"],"required":["groups:array"],"optional":["unit","chart.dataTable","note"]},"network":{"label":"关系网络页(节点-边拓扑)","modes":["research","architecture"],"required":["nodes:array","edges:array"],"optional":["chart.dataTable","note"]},"marimekko":{"label":"马赛克图页(列宽 × 列高双重编码)","modes":["research","architecture"],"required":["cols:array","cells:array"],"optional":["unit","chart.dataTable","note"]},"streamgraph":{"label":"流带图页(时间上的构成演变)","modes":["research","architecture"],"required":["series:array"],"optional":["labels:array","chart.dataTable","note"]}}};
|
|
2036
2059
|
/* __TOPPPT_SCHEMA_END__ */
|
|
2037
2060
|
|
|
2038
2061
|
var _mode = 'presentation'; /* 当前模式(slidesOf 里按 model.mode 设置) */
|
|
@@ -306,7 +306,13 @@ border-color:color-mix(in srgb,var(--accent-on) 20%,transparent);color:var(--acc
|
|
|
306
306
|
rows-2 / rows-3:等高行分区(纵向节奏,替代等高卡片堆叠) */
|
|
307
307
|
.g-211{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr)}
|
|
308
308
|
.g-121{grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr)}
|
|
309
|
-
.g-quad{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(
|
|
309
|
+
.g-quad{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(min-content,1fr);align-items:stretch}
|
|
310
|
+
.g-half{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:stretch}
|
|
311
|
+
@media (max-width:1180px){.g-half{grid-template-columns:1fr}}
|
|
312
|
+
.g-2--equal,.g-3--equal,.g-4--equal{grid-auto-rows:minmax(min-content,1fr);align-items:stretch}
|
|
313
|
+
.grid.g-2>.card,.grid.g-3>.card,.grid.g-4>.card,
|
|
314
|
+
.grid.g-quad>.card,.grid.g-half>.card,.grid.g-2--equal>.card,
|
|
315
|
+
.grid.g-3--equal>.card,.grid.g-4--equal>.card{align-self:stretch}
|
|
310
316
|
.g-aside{grid-template-columns:minmax(0,1fr) minmax(200px,.36fr);align-items:start}
|
|
311
317
|
.g-aside__side{position:sticky;top:calc(var(--bar-h) + 16px)}
|
|
312
318
|
.g-mosaic{grid-template-columns:repeat(3,minmax(0,1fr));
|
|
@@ -322,7 +328,7 @@ grid-template-areas:"main main main" "s1 s2 s3"}
|
|
|
322
328
|
.kv--2col{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr)}
|
|
323
329
|
/* ── 拼贴栅格 g-bento(Bento / 马赛克):4 列基准 + 跨列/跨行工具类 ──
|
|
324
330
|
.sp-2/.sp-3/.sp-4 跨列(span),.rw-2 跨行;窄屏自动降列并收敛 span。 */
|
|
325
|
-
.g-bento{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(
|
|
331
|
+
.g-bento{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(min-content,1fr)}
|
|
326
332
|
.sp-2{grid-column:span 2}.sp-3{grid-column:span 3}.sp-4{grid-column:span 4}
|
|
327
333
|
.rw-2{grid-row:span 2}
|
|
328
334
|
@media (max-width:1180px){.g-bento{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
@@ -357,19 +363,21 @@ background:color-mix(in srgb,var(--bg) 86%,transparent);
|
|
|
357
363
|
backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);
|
|
358
364
|
border-bottom:1px solid var(--border-soft);
|
|
359
365
|
transition:height var(--dur-medium) var(--ease-standard)}
|
|
360
|
-
.bar__in{height:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}
|
|
361
|
-
.brand{display:flex;align-items:center;gap:var(--sp-3);min-width:0}
|
|
366
|
+
.bar__in{height:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);overflow:hidden}
|
|
367
|
+
.brand{display:flex;align-items:center;gap:var(--sp-3);min-width:0;flex:1 1 auto;overflow:hidden}
|
|
362
368
|
.brand__mark{width:34px;height:34px;flex:none;border-radius:10px;background:var(--accent);
|
|
363
369
|
color:var(--accent-on);display:grid;place-items:center;font-size:13px;font-weight:700}
|
|
370
|
+
.brand__txt{min-width:0;overflow:hidden;flex:1 1 auto}
|
|
364
371
|
.brand__title{font-size:var(--fs-sm);font-weight:600;color:var(--text);white-space:nowrap;
|
|
365
|
-
overflow:hidden;text-overflow:ellipsis}
|
|
372
|
+
overflow:hidden;text-overflow:ellipsis;max-width:100%}
|
|
366
373
|
.brand__sub{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap;overflow:hidden;
|
|
367
|
-
text-overflow:ellipsis}
|
|
368
|
-
.nav{display:flex;align-items:center;gap:var(--sp-1)}
|
|
374
|
+
text-overflow:ellipsis;max-width:100%}
|
|
375
|
+
.nav{display:flex;align-items:center;gap:var(--sp-1);flex:0 1 auto;min-width:0;overflow:hidden}
|
|
369
376
|
.nav a{padding:8px 14px;border-radius:var(--r-full);color:var(--text-2);text-decoration:none;
|
|
370
377
|
font-size:var(--fs-sm);font-weight:500;white-space:nowrap;transition:background-color var(--dur-short),color var(--dur-short)}
|
|
371
378
|
.nav a:hover{background:var(--surface-2);color:var(--text)}
|
|
372
379
|
@media (max-width:1180px){.nav{display:none}}
|
|
380
|
+
@media (max-width:1360px){.brand__sub{display:none}}
|
|
373
381
|
.iconbtn{width:40px;height:40px;flex:none;display:grid;place-items:center;
|
|
374
382
|
border:1px solid var(--border);border-radius:var(--r-full);background:transparent;
|
|
375
383
|
color:var(--text-2);cursor:pointer;transition:background-color var(--dur-short),color var(--dur-short)}
|
|
@@ -424,12 +432,15 @@ transition:background-color var(--dur-short),box-shadow var(--dur-short),transfo
|
|
|
424
432
|
.btn--ghost{background:transparent;color:var(--text);border-color:var(--border)}
|
|
425
433
|
.btn--onDark{background:var(--surface);color:var(--text)}
|
|
426
434
|
.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);
|
|
427
|
-
padding:clamp(20px,2vw,30px);transition:border-color var(--dur-short),box-shadow var(--dur-short),background-color var(--dur-medium)
|
|
435
|
+
padding:clamp(20px,2vw,30px);transition:border-color var(--dur-short),box-shadow var(--dur-short),background-color var(--dur-medium);
|
|
436
|
+
display:flex;flex-direction:column;min-width:0}
|
|
428
437
|
.card:hover{border-color:var(--border);box-shadow:var(--shadow-1)}
|
|
429
438
|
.card--flat{background:var(--surface-1);border-color:transparent}
|
|
430
439
|
.card--flat:hover{background:var(--surface-2)}
|
|
431
440
|
.card--accent{background:var(--accent-soft);border-color:transparent}
|
|
432
|
-
.card__hd{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
|
|
441
|
+
.card__hd{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);flex:none}
|
|
442
|
+
.card>.ul,.card>.t-body,.card>.t-sm{flex:1 1 auto}
|
|
443
|
+
.card>.so-what,.card>.tbd-legend,.card>.flagbar{flex:none;margin-top:auto}
|
|
433
444
|
.card__ico{width:34px;height:34px;flex:none;border-radius:10px;background:var(--accent-soft);
|
|
434
445
|
color:var(--accent-text);display:grid;place-items:center;font-size:15px;font-weight:600}
|
|
435
446
|
.card__ico svg{width:18px;height:18px}
|