Files
tw93--kami/assets/templates/one-pager.html
T
2026-04-21 00:35:09 +08:00

360 lines
9.0 KiB
HTML
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.
<!DOCTYPE html>
<!-- ==================================================================
ONE-PAGER TEMPLATE · parchment design system
单页 A4 方案/报告/执行摘要
改完跑:python3 -c "from weasyprint import HTML; HTML('one-pager.html').write_pdf('out.pdf')"
目标:页数必须 == 1
================================================================== -->
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{{文档标题}}</title>
<style>
@font-face {
font-family: "TsangerJinKai02";
src: url("../fonts/TsangerJinKai02-W04.ttf") format("truetype");
font-weight: 500;
font-style: normal;
}
@page {
size: A4;
margin: 15mm 18mm 15mm 18mm;
background: #f5f4ed;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--parchment: #f5f4ed;
--ivory: #faf9f5;
--sand: #e8e6dc;
--near-black:#141413;
--dark-warm: #3d3d3a;
--charcoal: #4d4c48;
--olive: #5e5d59;
--stone: #87867f;
--brand: #1B365D;
--border: #e8e6dc;
--border-soft:#efede4;
--tag-bg: #E4ECF5;
}
html, body { background: var(--parchment); }
body {
color: var(--near-black);
font-family: "TsangerJinKai02", "Source Han Serif SC",
"Noto Serif CJK SC", "Songti SC", Georgia, serif;
font-size: 10pt;
line-height: 1.45;
}
.serif {
font-family: "TsangerJinKai02", "Source Han Serif SC",
"Noto Serif CJK SC", "Songti SC", Georgia, serif;
}
/* ========== HEADER ========== */
.header {
border-bottom: 1pt solid var(--brand);
padding-bottom: 8pt;
margin-bottom: 14pt;
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 20pt;
}
.title-block {
flex: 1;
}
.eyebrow {
font-size: 8.5pt;
color: var(--brand);
letter-spacing: 0.5pt;
text-transform: uppercase;
margin-bottom: 4pt;
}
h1 {
font-family: "TsangerJinKai02", "Source Han Serif SC",
"Noto Serif CJK SC", Georgia, serif;
font-size: 24pt;
font-weight: 500;
color: var(--near-black);
line-height: 1.15;
margin-bottom: 5pt;
}
.subtitle {
font-size: 11pt;
color: var(--olive);
line-height: 1.4;
}
.meta {
font-size: 8.5pt;
color: var(--stone);
text-align: right;
line-height: 1.45;
white-space: nowrap;
}
/* ========== METRICS ========== */
/* 横向 baseline 布局 —— 和 resume.html 一致的 kami native 姿态。
背景透明、无边框,用 typography 本身承担层次,不加容器。 */
.metrics {
display: flex;
gap: 14pt;
margin-bottom: 18pt;
padding: 4pt 0 6pt 0;
border-bottom: 0.3pt dotted var(--border);
}
.metric {
flex: 1;
background: transparent;
padding: 0;
display: flex;
align-items: baseline;
gap: 4pt;
break-inside: avoid;
}
.metric-value {
font-family: "TsangerJinKai02", "Source Han Serif SC", Georgia, serif;
font-size: 20pt;
font-weight: 500;
color: var(--brand);
line-height: 1;
font-variant-numeric: tabular-nums;
letter-spacing: -0.2pt;
}
.metric-label {
font-size: 8.5pt;
color: var(--olive);
line-height: 1.3;
}
/* ========== SECTIONS ========== */
section { margin-bottom: 18pt; break-inside: avoid; }
section:last-of-type { margin-bottom: 0; }
h2 {
font-family: "TsangerJinKai02", "Source Han Serif SC", Georgia, serif;
font-size: 13pt;
font-weight: 500;
color: var(--near-black);
margin-bottom: 6pt;
padding-bottom: 3pt;
border-bottom: 0.5pt solid var(--brand);
}
h2 .sub {
font-size: 8.5pt;
color: var(--stone);
font-weight: 400;
margin-left: 6pt;
}
p { margin-bottom: 6pt; line-height: 1.45; }
p:last-child { margin-bottom: 0; }
.lead {
font-size: 12pt;
line-height: 1.5;
color: var(--dark-warm);
margin-bottom: 14pt;
}
.hl { color: var(--brand); font-weight: 500; }
/* ========== 2-column grid ========== */
.two-col {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18pt;
}
/* ========== 短横线 list(代替默认 bullet ========== */
ul.dash {
list-style: none;
margin: 0;
padding: 0;
}
ul.dash li {
position: relative;
padding-left: 12pt;
margin-bottom: 4pt;
line-height: 1.45;
}
ul.dash li::before {
content: "-";
position: absolute;
left: 0;
color: var(--brand);
}
/* ========== Timeline (横向进度点) ========== */
.timeline {
display: flex;
gap: 12pt;
margin-top: 6pt;
}
.tl-step {
flex: 1;
break-inside: avoid;
}
.tl-year {
font-family: "TsangerJinKai02", "Source Han Serif SC", Georgia, serif;
font-size: 11pt;
font-weight: 500;
color: var(--brand);
margin-bottom: 2pt;
}
.tl-head {
font-size: 10pt;
font-weight: 500;
color: var(--near-black);
margin-bottom: 2pt;
}
.tl-body {
font-size: 8.5pt;
color: var(--olive);
line-height: 1.4;
}
/* ========== Tag ========== */
.tag {
display: inline-block;
background: var(--tag-bg); /* 实色!不要 rgba */
color: var(--brand);
font-size: 7.5pt;
font-weight: 500;
padding: 1pt 5pt;
border-radius: 3pt;
letter-spacing: 0.1pt;
margin-right: 3pt;
}
/* ========== Callout / 高亮块 ========== */
/* 参考 resume.html .team-culture:透明底 + 单左侧 brand 竖条。
不做容器也不做圆角,气质是"一条旁注"而不是"一个卡片"。 */
.callout {
background: transparent;
border-left: 1.8pt solid var(--brand);
padding: 4pt 0 4pt 14pt;
margin: 10pt 0;
font-size: 10pt;
line-height: 1.5;
color: var(--olive);
break-inside: avoid;
}
.callout .hl, .callout .em-brand { color: var(--brand); }
/* ========== FOOTER ========== */
.footer {
margin-top: 18pt;
padding-top: 6pt;
border-top: 0.3pt dotted var(--border);
font-size: 8pt;
color: var(--stone);
display: flex;
justify-content: space-between;
letter-spacing: 0.3pt;
}
</style>
</head>
<body>
<!-- ========== HEADER ========== -->
<div class="header">
<div class="title-block">
<div class="eyebrow">{{EYEBROW · 如 "产品方案" / "项目提案" / "执行摘要"}}</div>
<h1>{{文档主标题(serif,2 行内,动词+名词结构最好)}}</h1>
<div class="subtitle">{{一行副标题 / 一句核心论点}}</div>
</div>
<div class="meta">
{{作者名}}<br>
{{日期 YYYY.MM.DD}}<br>
{{版本号 / 状态}}
</div>
</div>
<!-- ========== METRICS(可选,3-4 卡最佳) ========== -->
<div class="metrics">
<div class="metric">
<div class="metric-value">{{数字}}</div>
<div class="metric-label">{{标签描述}}</div>
</div>
<div class="metric">
<div class="metric-value">{{数字}}</div>
<div class="metric-label">{{标签描述}}</div>
</div>
<div class="metric">
<div class="metric-value">{{数字}}</div>
<div class="metric-label">{{标签描述}}</div>
</div>
<div class="metric">
<div class="metric-value">{{数字}}</div>
<div class="metric-label">{{标签描述}}</div>
</div>
</div>
<!-- ========== LEAD(导语,一段) ========== -->
<p class="lead">
{{一段 40-60 字的核心论点导语。用「<span class="hl">关键词</span>」高亮重点。这段定调整个文档。}}
</p>
<!-- ========== 核心内容(两栏) ========== -->
<div class="two-col">
<section>
<h2>{{section 标题 1}}</h2>
<p>{{这里写 1-2 句段落,展开论点。}}</p>
<ul class="dash">
<li>{{短 bullet:数据/观察/判断}}</li>
<li>{{短 bullet:带 <span class="hl">关键数字</span> 的论据}}</li>
<li>{{短 bullet}}</li>
</ul>
</section>
<section>
<h2>{{section 标题 2}}</h2>
<p>{{1-2 句段落。}}</p>
<ul class="dash">
<li>{{短 bullet}}</li>
<li>{{短 bullet}}</li>
<li>{{短 bullet}}</li>
</ul>
</section>
</div>
<!-- ========== Timeline / Roadmap(可选) ========== -->
<section>
<h2>时间线 / 路线图<span class="sub">(适用于方案类文档)</span></h2>
<div class="timeline">
<div class="tl-step">
<div class="tl-year">阶段 1</div>
<div class="tl-head">{{阶段标题}}</div>
<div class="tl-body">{{一句解释}}</div>
</div>
<div class="tl-step">
<div class="tl-year">阶段 2</div>
<div class="tl-head">{{阶段标题}}</div>
<div class="tl-body">{{一句解释}}</div>
</div>
<div class="tl-step">
<div class="tl-year">阶段 3</div>
<div class="tl-head">{{阶段标题}}</div>
<div class="tl-body">{{一句解释}}</div>
</div>
</div>
</section>
<!-- ========== CALLOUT(可选)========== -->
<div class="callout">
{{关键引用 / 重要提示 / 核心 takeaway。比正文更需要引起注意的内容放这里。}}
</div>
<!-- ========== FOOTER ========== -->
<div class="footer">
<span>{{机密级别 / 内部 / 公开 等}}</span>
<span>{{页码 / 联系方式}}</span>
</div>
</body>
</html>