Add HyperFrames skills

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011h6NB8JQtfPc6eRCefEzBB
This commit is contained in:
Claude committed 2026-10-14 21:51:46 +00:00
1 parent 6bd8165e6d
commit 1b2c8439f0
964 files changed
+142321

No files matched your search

@@ -0,0 +1,172 @@
<!--
Style: academic — warm paper · serif · blue highlight · coral annotation
─────────────────────────────────────────────────────────────────────
Tokens
bg #f1ead8 (warm paper)
ink #1a1d2b
muted #5b5749
accent #2557a7 (blue, used for kicker chip + text highlight)
accent2#c14d2c (coral, used for dashed quote box)
Fonts
headline & body — serif. Falls back to "ui-serif, 'Songti SC', serif"
mono — "ui-monospace, monospace"
Best with
layouts: split, stack, pip
frames: clean, hairline
content: 访谈反思 / 学术总结 / 长视频拆解
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · academic</title>
<style>
/* preview wrapper — NOT part of the card fragment */
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-academic">
<style>
.card[data-card-id="ref-academic"] .root {
--bg: #f1ead8;
--ink: #1a1d2b;
--muted: #5b5749;
--accent: #2557a7;
--accent2: #c14d2c;
--font-head: ui-serif, "Songti SC", "Times New Roman", serif;
--font-body: ui-serif, "Songti SC", "Times New Roman", serif;
--font-mono: ui-monospace, "SF Mono", Menlo, monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background-color: var(--bg);
background-image:
linear-gradient(rgba(91, 87, 73, 0.2) 1px, transparent 1px),
linear-gradient(90deg, rgba(91, 87, 73, 0.2) 1px, transparent 1px),
radial-gradient(120% 80% at 50% 0%, #fff8e9 0%, transparent 60%);
background-size:
28px 28px,
28px 28px,
100% 100%;
padding: 32px 40px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
gap: 16px;
color: var(--ink);
font-family: var(--font-body);
}
.card[data-card-id="ref-academic"] .meta {
display: flex;
align-items: baseline;
gap: 14px;
}
.card[data-card-id="ref-academic"] .kicker {
padding: 7px 14px;
background: var(--accent);
color: #fff;
font: 700 16px/1 var(--font-mono);
letter-spacing: 0.16em;
}
.card[data-card-id="ref-academic"] .time {
font: 15px/1 var(--font-mono);
color: var(--muted);
letter-spacing: 0.1em;
}
.card[data-card-id="ref-academic"] .title {
margin: 0;
font: 700 92px/1.05 var(--font-head);
color: var(--ink);
letter-spacing: 0.01em;
display: inline;
background: linear-gradient(
transparent 62%,
rgba(37, 87, 167, 0.2) 62%,
rgba(37, 87, 167, 0.2) 92%,
transparent 92%
);
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
padding: 0 8px;
}
.card[data-card-id="ref-academic"] .detail {
margin: 0;
font: 30px/1.5 var(--font-body);
color: var(--muted);
max-width: 94%;
}
.card[data-card-id="ref-academic"] .hl {
background: linear-gradient(transparent 60%, rgba(37, 87, 167, 0.25) 60%);
padding: 0 4px;
}
.card[data-card-id="ref-academic"] .quote {
align-self: flex-start;
padding: 10px 18px;
border: 1.5px dashed var(--accent2);
color: var(--accent2);
font: italic 600 24px/1 var(--font-head);
transform: rotate(-1deg);
}
</style>
<div class="root">
<div class="meta">
<span class="kicker" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.4"
>TAKEAWAY</span
>
<span class="time">00:18 → 00:46</span>
</div>
<h2
class="title"
data-anim="kinetic-chars"
data-anim-at="0.25"
data-anim-duration="0.55"
data-anim-stagger="0.04"
data-anim-pattern="pop"
>
<span class="char">少</span><span class="char">即</span><span class="char">是</span>
<span class="char">多</span>
</h2>
<p class="detail" data-anim="fade-in" data-anim-at="0.7" data-anim-duration="0.45">
复杂的解释往往是<span class="hl">未经压缩的思考</span
>。当你能用最少的词说清最重要的点时, 你也就真正想明白了这件事。
</p>
<div class="quote" data-anim="scale-pop" data-anim-at="1.05" data-anim-duration="0.5">
"Compression is comprehension."
</div>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,170 @@
<!--
Style: audit — manila paper · justified serif · APPROVED stamp · brick + navy
─────────────────────────────────────────────────────────────────────
Tokens
bg #ebd9b4 (manila)
ink #1d1a14
muted #6b5e44
accent #8b1d1d (brick red — stamp + heading underline)
accent2#1c3a6b (navy — footnote markers)
Fonts
headline — serif; ui-serif, "Songti SC", "Times New Roman", serif
body — serif justified
Best with
layouts: split, stack
frames: hairline, clean
content: 财报分析 / 调查报告 / 数据稽核 / 严肃陈述
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · audit</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-audit">
<style>
.card[data-card-id="ref-audit"] .root {
--bg: #ebd9b4;
--ink: #1d1a14;
--muted: #6b5e44;
--accent: #8b1d1d;
--accent2: #1c3a6b;
--font-head: ui-serif, "Songti SC", "Times New Roman", serif;
--font-body: ui-serif, "Songti SC", "Times New Roman", serif;
--font-mono: ui-monospace, "SF Mono", Menlo, monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background-color: var(--bg);
background-image:
repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.02) 0 1px, transparent 1px 28px),
radial-gradient(120% 80% at 20% 0%, rgba(255, 250, 235, 0.45) 0%, transparent 60%);
padding: 48px 64px 56px;
box-sizing: border-box;
display: flex;
flex-direction: column;
gap: 18px;
color: var(--ink);
font-family: var(--font-body);
}
.card[data-card-id="ref-audit"] .head {
display: flex;
justify-content: space-between;
align-items: baseline;
border-bottom: 2px solid var(--ink);
padding-bottom: 10px;
}
.card[data-card-id="ref-audit"] .kicker {
font: 700 14px/1 var(--font-mono);
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--ink);
}
.card[data-card-id="ref-audit"] .ref {
font: 13px/1 var(--font-mono);
color: var(--muted);
letter-spacing: 0.14em;
}
.card[data-card-id="ref-audit"] .title {
margin: 0;
font: 700 76px/1.1 var(--font-head);
color: var(--ink);
letter-spacing: 0.005em;
}
.card[data-card-id="ref-audit"] .title .accent {
color: var(--accent);
}
.card[data-card-id="ref-audit"] .body {
margin: 0;
font: 26px/1.55 var(--font-body);
color: var(--ink);
text-align: justify;
column-count: 2;
column-gap: 32px;
max-width: 100%;
}
.card[data-card-id="ref-audit"] .body .sup {
color: var(--accent2);
font-weight: 700;
}
.card[data-card-id="ref-audit"] .foot {
border-top: 1px solid var(--muted);
padding-top: 10px;
font: italic 14px/1.4 var(--font-body);
color: var(--muted);
}
.card[data-card-id="ref-audit"] .stamp {
position: absolute;
right: 56px;
top: 120px;
padding: 12px 22px;
border: 4px solid var(--accent);
color: var(--accent);
font: 800 36px/1 var(--font-head);
letter-spacing: 0.14em;
transform: rotate(-12deg);
opacity: 0.9;
box-shadow: 0 0 0 1px var(--accent) inset;
}
</style>
<div class="root">
<div class="head">
<span class="kicker" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.35"
>EXHIBIT · TAKEAWAY</span
>
<span class="ref">REF / VT-2026-014</span>
</div>
<span class="stamp" data-anim="scale-pop" data-anim-at="0.7" data-anim-duration="0.4"
>APPROVED</span
>
<h2 class="title" data-anim="fade-in" data-anim-at="0.25" data-anim-duration="0.5">
第三季度<span class="accent">现金流</span>由负转正
</h2>
<p class="body" data-anim="fade-in" data-anim-at="0.55" data-anim-duration="0.5">
经营性现金流首次为正<span class="sup">①</span>,主要由订阅业务驱动。 自由现金流由 -2.1
亿改善至 +0.8 亿,按当前轨迹推算<span class="sup">②</span>,全年有望实现正向 1.5–2.0
亿。 与此同时,应收账款周转天数从 64 天压缩至 51 天,回款效率创近两年新高。
</p>
<div class="foot" data-anim="fade-in" data-anim-at="0.95" data-anim-duration="0.4">
① 含一次性税务返还 0.3 亿;② 假设 Q4 续约率不低于 91%。
</div>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,189 @@
<!--
Style: editorial — cream · coral block · big italic quote · Playfair-like serif
─────────────────────────────────────────────────────────────────────
Tokens
bg #f1e8d5 (cream)
ink #0e1018
muted #6b6353
accent #ff3a2d (coral red — used as block accents + italic quote color)
accent2 #1f6bff (blue — used for ring/circle outline)
accent3 #f2cf3a (yellow dot)
Fonts
headline — Playfair Display fallback: ui-serif, "Songti SC", serif
body — ui-serif, serif
Best with
layouts: overlay, pip, stack
frames: clean, polaroid
content: 产品发布 / 编辑专栏 / 大字宣言
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · editorial</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-editorial">
<style>
.card[data-card-id="ref-editorial"] .root {
--bg: #f1e8d5;
--ink: #0e1018;
--muted: #6b6353;
--accent: #ff3a2d;
--accent2: #1f6bff;
--accent3: #f2cf3a;
/* IMPORTANT — this skill only ships Caveat / LXGW WenKai TC / Inter / Virgil.
Playfair Display is NOT bundled; if you list it first the font resolver
can't load it and you'll get inconsistent rendering across machines.
The editorial look uses italic-bold serif at large size — ui-serif on
macOS resolves to Times/New York which is close enough; for a real
Playfair you'd need to add the woff2 to public/fonts/. */
--font-head: ui-serif, "Songti SC", "Times New Roman", serif;
--font-body: ui-serif, "Songti SC", serif;
--font-mono: ui-monospace, "SF Mono", Menlo, monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background: var(--bg);
padding: 56px 64px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
gap: 24px;
color: var(--ink);
font-family: var(--font-body);
}
.card[data-card-id="ref-editorial"] .kicker {
align-self: flex-start;
padding: 8px 16px;
background: var(--ink);
color: var(--bg);
font: 700 16px/1 var(--font-mono);
letter-spacing: 0.22em;
}
.card[data-card-id="ref-editorial"] .title {
margin: 0;
font: italic 800 132px/0.95 var(--font-head);
color: var(--ink);
letter-spacing: -0.01em;
max-width: 92%;
}
.card[data-card-id="ref-editorial"] .first {
font-style: italic;
color: var(--accent);
}
.card[data-card-id="ref-editorial"] .quote-mark {
font: 800 220px/0.5 var(--font-head);
color: var(--accent);
position: absolute;
top: 24px;
right: 64px;
opacity: 0.9;
}
.card[data-card-id="ref-editorial"] .detail {
margin: 0;
font: 28px/1.5 var(--font-body);
color: var(--muted);
max-width: 78%;
}
.card[data-card-id="ref-editorial"] .hl {
background: linear-gradient(transparent 62%, rgba(255, 58, 45, 0.22) 62%);
color: var(--ink);
padding: 0 4px;
}
.card[data-card-id="ref-editorial"] .accents {
position: absolute;
}
.card[data-card-id="ref-editorial"] .block-coral {
top: 64px;
right: 88px;
width: 96px;
height: 96px;
background: var(--accent);
transform: rotate(12deg);
}
.card[data-card-id="ref-editorial"] .dot-yellow {
top: 200px;
right: 60px;
width: 36px;
height: 36px;
background: var(--accent3);
border-radius: 50%;
}
.card[data-card-id="ref-editorial"] .ring-blue {
bottom: 80px;
right: 80px;
width: 80px;
height: 80px;
border: 4px solid var(--accent2);
border-radius: 50%;
}
</style>
<div class="root">
<span
class="accents block-coral"
data-anim="scale-pop"
data-anim-at="0.15"
data-anim-duration="0.5"
></span>
<span
class="accents dot-yellow"
data-anim="fade-in"
data-anim-at="0.35"
data-anim-duration="0.4"
></span>
<span
class="accents ring-blue"
data-anim="fade-in"
data-anim-at="0.55"
data-anim-duration="0.4"
></span>
<span class="kicker" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.4"
>TAKEAWAY</span
>
<h1 class="title" data-anim="fade-in" data-anim-at="0.3" data-anim-duration="0.6">
<span class="first">真</span>正的创造,从拒绝套路开始。
</h1>
<p class="detail" data-anim="fade-in" data-anim-at="0.8" data-anim-duration="0.45">
停止模仿、停止套模板,把每一个想法都当作<span class="hl">第一次表达</span>。
只有这样,作品才会带上你的体温。
</p>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,181 @@
<!--
Style: geom — chartreuse + hot pink + black collision · bold Helvetica
─────────────────────────────────────────────────────────────────────
Tokens
bg #0a0a0a (deep black for contrast)
ink #ffffff
muted #aaaaaa
accent #d4ff00 (chartreuse — primary slab)
accent2#ff2e88 (hot pink — secondary slab + dot)
accent3#ffffff (white — line work)
Fonts
headline — Inter Black / ui-sans-serif with very wide weight
body — Inter
Best with
layouts: pip, overlay, stack
frames: clean, hairline
content: 产品发布 / 大胆宣言 / 撞色封面 / 短视频高光
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · geom</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-geom">
<style>
.card[data-card-id="ref-geom"] .root {
--bg: #0a0a0a;
--ink: #ffffff;
--muted: #aaaaaa;
--accent: #d4ff00;
--accent2: #ff2e88;
--accent3: #ffffff;
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
--font-mono: ui-monospace, "SF Mono", Menlo, monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background: var(--bg);
color: var(--ink);
font-family: var(--font-sans);
}
.card[data-card-id="ref-geom"] .slab-1 {
position: absolute;
left: 0;
top: 0;
width: 540px;
height: 200px;
background: var(--accent);
}
.card[data-card-id="ref-geom"] .slab-2 {
position: absolute;
right: 0;
bottom: 0;
width: 360px;
height: 360px;
background: var(--accent2);
}
.card[data-card-id="ref-geom"] .stripe {
position: absolute;
left: -40px;
top: 760px;
height: 4px;
width: 600px;
background: var(--accent3);
transform: rotate(-6deg);
}
.card[data-card-id="ref-geom"] .content {
position: absolute;
left: 64px;
top: 240px;
right: 480px;
bottom: 80px;
display: flex;
flex-direction: column;
justify-content: center;
gap: 28px;
}
.card[data-card-id="ref-geom"] .kicker {
align-self: flex-start;
padding: 8px 14px;
background: var(--ink);
color: var(--bg);
font: 800 18px/1 var(--font-mono);
letter-spacing: 0.24em;
}
.card[data-card-id="ref-geom"] .title {
margin: 0;
font: 900 156px/0.92 var(--font-sans);
color: var(--ink);
letter-spacing: -0.04em;
text-transform: uppercase;
}
.card[data-card-id="ref-geom"] .stroke {
-webkit-text-stroke: 3px var(--accent);
color: transparent;
}
.card[data-card-id="ref-geom"] .detail {
margin: 0;
font: 600 26px/1.4 var(--font-sans);
color: var(--muted);
max-width: 88%;
}
.card[data-card-id="ref-geom"] .detail .pink {
color: var(--accent2);
}
</style>
<div class="root">
<span
class="slab-1"
data-anim="slide-in"
data-anim-at="0.1"
data-anim-duration="0.45"
data-anim-from="left"
data-anim-distance="540"
></span>
<span
class="slab-2"
data-anim="slide-in"
data-anim-at="0.25"
data-anim-duration="0.45"
data-anim-from="right"
data-anim-distance="360"
></span>
<span
class="stripe"
data-anim="grow-x"
data-anim-at="0.5"
data-anim-duration="0.5"
data-anim-target-w="600"
></span>
<div class="content">
<span class="kicker" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.4"
>TAKEAWAY</span
>
<h1 class="title" data-anim="fade-in" data-anim-at="0.55" data-anim-duration="0.5">
<span class="stroke">BIG</span><br />IDEA.
</h1>
<p class="detail" data-anim="fade-in" data-anim-at="0.95" data-anim-duration="0.4">
别再做温和的中间方案。要么<span class="pink">最大胆</span>,要么不做。
</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,130 @@
<!--
Style: minimal — pure black on white · huge type · generous space
─────────────────────────────────────────────────────────────────────
Tokens
bg #ffffff
ink #000000
muted #6b7280
accent #000000 (no color; weight & size do the work)
Fonts
headline & body — Inter, ui-sans-serif, system-ui, sans-serif
Best with
layouts: split, stack, overlay
frames: clean, hairline
content: 极简陈述 / 数据揭示 / 大字标题
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · minimal</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-minimal">
<style>
.card[data-card-id="ref-minimal"] .root {
--bg: #ffffff;
--ink: #000000;
--muted: #6b7280;
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background: var(--bg);
color: var(--ink);
padding: 80px 96px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
gap: 56px;
font-family: var(--font-sans);
}
.card[data-card-id="ref-minimal"] .kicker {
font: 600 14px/1 var(--font-sans);
letter-spacing: 0.32em;
color: var(--ink);
text-transform: uppercase;
}
.card[data-card-id="ref-minimal"] .title {
margin: 0;
font: 900 132px/0.95 var(--font-sans);
color: var(--ink);
letter-spacing: -0.04em;
}
.card[data-card-id="ref-minimal"] .detail {
margin: 0;
font: 400 36px/1.4 var(--font-sans);
color: var(--muted);
max-width: 82%;
letter-spacing: -0.005em;
}
.card[data-card-id="ref-minimal"] .rule {
width: 0;
height: 4px;
background: var(--ink);
}
</style>
<div class="root">
<span class="kicker" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.4"
>TAKEAWAY</span
>
<h1
class="title"
data-anim="kinetic-chars"
data-anim-at="0.3"
data-anim-duration="0.6"
data-anim-stagger="0.05"
data-anim-pattern="pop"
>
<span class="char">五</span><span class="char">秒</span><span class="char">决</span
><span class="char">定</span> <span class="char">一</span><span class="char">切</span>
</h1>
<div
class="rule"
data-anim="grow-x"
data-anim-at="0.9"
data-anim-duration="0.5"
data-anim-target-w="240"
></div>
<p class="detail" data-anim="fade-in" data-anim-at="1.05" data-anim-duration="0.45">
用户给一个新界面的时间不超过五秒。这意味着第一屏不需要解释,需要让人立刻知道这是什么、为什么有用。
</p>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,142 @@
<!--
Style: spotlight — dark purple gradient · violet glow · dramatic
─────────────────────────────────────────────────────────────────────
Tokens
bg radial-gradient deep purple-blue (#0e0a24 → #1b1648)
ink #f5f3ff (off-white)
muted #b6b4d0
accent #a78bfa (violet) — used as glow + kicker dot
accent2#7c6bff (deeper violet) — used as outer-glow second layer
Fonts
headline — ui-serif fallback for serif drama; or Playfair-like
body — ui-sans-serif
Best with
layouts: overlay, pip
frames: clean (skip hairline/polaroid — clashes with glow)
content: 情绪故事 / 旁白 / 角色弧线 / 黑暗时刻
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · spotlight</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-spotlight">
<style>
.card[data-card-id="ref-spotlight"] .root {
--ink: #f5f3ff;
--muted: #b6b4d0;
--accent: #a78bfa;
--accent2: #7c6bff;
--font-head: ui-serif, "Songti SC", serif;
--font-body: ui-sans-serif, system-ui, sans-serif;
--font-mono: ui-monospace, monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
color: var(--ink);
font-family: var(--font-body);
background:
radial-gradient(70% 55% at 28% 30%, rgba(167, 139, 250, 0.35) 0%, transparent 55%),
radial-gradient(80% 70% at 80% 80%, rgba(124, 107, 255, 0.22) 0%, transparent 60%),
linear-gradient(160deg, #1b1648 0%, #0e0a24 100%);
padding: 48px 56px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
gap: 22px;
}
.card[data-card-id="ref-spotlight"] .meta {
display: flex;
align-items: center;
gap: 14px;
}
.card[data-card-id="ref-spotlight"] .kicker-dot {
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--accent);
box-shadow:
0 0 18px var(--accent),
0 0 4px var(--accent);
}
.card[data-card-id="ref-spotlight"] .kicker {
font: 600 16px/1 var(--font-mono);
letter-spacing: 0.26em;
color: var(--accent);
}
.card[data-card-id="ref-spotlight"] .title {
margin: 0;
font: 800 104px/1.05 var(--font-head);
color: var(--ink);
letter-spacing: -0.005em;
text-shadow: 0 4px 60px rgba(167, 139, 250, 0.45);
}
.card[data-card-id="ref-spotlight"] .hl {
color: var(--accent);
text-shadow: 0 0 24px rgba(167, 139, 250, 0.7);
}
.card[data-card-id="ref-spotlight"] .detail {
margin: 0;
font: 28px/1.55 var(--font-body);
color: var(--muted);
max-width: 88%;
}
</style>
<div class="root">
<div class="meta">
<span
class="kicker-dot"
data-anim="scale-pop"
data-anim-at="0.05"
data-anim-duration="0.4"
></span>
<span class="kicker" data-anim="fade-in" data-anim-at="0.1" data-anim-duration="0.4"
>TAKEAWAY</span
>
</div>
<h2 class="title" data-anim="blur-in" data-anim-at="0.3" data-anim-duration="0.7">
在最暗的房间里,<span class="hl">一道光</span>就够了。
</h2>
<p class="detail" data-anim="fade-in" data-anim-at="1.0" data-anim-duration="0.5">
所有伟大决定都是在不确定的时候做出的。怕的不是黑,是不敢点亮那一根火柴。
</p>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,188 @@
<!--
Style: swiss — pure white · Helvetica · strict double rules · red accent slab
─────────────────────────────────────────────────────────────────────
Tokens
bg #ffffff
ink #111111
muted #555555
accent #e8190f (signal red — slab + number)
Fonts
headline & body — Helvetica / Inter / system sans
Best with
layouts: split, stack, overlay
frames: clean, hairline
content: 严肃陈述 / 排版主导 / 文化机构 / 极简数据
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · swiss</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-swiss">
<style>
.card[data-card-id="ref-swiss"] .root {
--bg: #ffffff;
--ink: #111111;
--muted: #555555;
--accent: #e8190f;
--font-sans:
"Helvetica Neue", Helvetica, "Inter", ui-sans-serif, system-ui, sans-serif;
--font-mono: ui-monospace, "SF Mono", Menlo, monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background: var(--bg);
color: var(--ink);
font-family: var(--font-sans);
padding: 48px 64px;
box-sizing: border-box;
display: grid;
grid-template-rows: auto 1fr auto;
gap: 24px;
}
.card[data-card-id="ref-swiss"] .top-rule {
height: 4px;
background: var(--ink);
}
.card[data-card-id="ref-swiss"] .top-meta {
display: flex;
justify-content: space-between;
align-items: baseline;
padding-top: 12px;
font: 700 14px/1 var(--font-mono);
letter-spacing: 0.26em;
color: var(--ink);
text-transform: uppercase;
}
.card[data-card-id="ref-swiss"] .top-meta .num {
color: var(--accent);
}
.card[data-card-id="ref-swiss"] .body {
display: grid;
grid-template-columns: 1fr 320px;
gap: 56px;
align-items: end;
}
.card[data-card-id="ref-swiss"] .title {
margin: 0;
font: 700 116px/0.95 var(--font-sans);
color: var(--ink);
letter-spacing: -0.025em;
}
.card[data-card-id="ref-swiss"] .title .red {
color: var(--accent);
}
.card[data-card-id="ref-swiss"] .detail {
margin: 0;
font: 400 24px/1.45 var(--font-sans);
color: var(--muted);
}
.card[data-card-id="ref-swiss"] .slab {
background: var(--accent);
color: #fff;
padding: 24px 28px;
font: 700 56px/1 var(--font-sans);
letter-spacing: -0.02em;
align-self: end;
}
.card[data-card-id="ref-swiss"] .slab small {
display: block;
font: 600 14px/1 var(--font-mono);
letter-spacing: 0.18em;
margin-top: 6px;
color: rgba(255, 255, 255, 0.85);
}
.card[data-card-id="ref-swiss"] .bottom-rule {
height: 1px;
background: var(--ink);
}
.card[data-card-id="ref-swiss"] .bottom-meta {
display: flex;
justify-content: space-between;
align-items: baseline;
padding-top: 12px;
font: 600 13px/1 var(--font-mono);
letter-spacing: 0.22em;
color: var(--muted);
}
</style>
<div class="root">
<div>
<div
class="top-rule"
data-anim="grow-x"
data-anim-at="0.05"
data-anim-duration="0.45"
data-anim-target-w="1792"
></div>
<div
class="top-meta"
data-anim="fade-in"
data-anim-at="0.3"
data-anim-duration="0.35"
>
<span>V—TAKE / TAKEAWAY</span>
<span class="num">№ 09</span>
</div>
</div>
<div class="body">
<h2 class="title" data-anim="fade-in" data-anim-at="0.45" data-anim-duration="0.55">
<span class="red">设计</span>不是装饰,<br />而是结构。
</h2>
<div
class="slab"
data-anim="slide-in"
data-anim-at="0.55"
data-anim-duration="0.45"
data-anim-from="right"
data-anim-distance="120"
>
92<small>STRUCTURE INDEX</small>
</div>
</div>
<div>
<div class="bottom-rule"></div>
<div class="bottom-meta">
<span>RATIO 1 : 1.618</span>
<span>00:42 → 01:14</span>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,196 @@
<!--
Style: terminal — dark · JetBrains Mono · ASCII border · prompt · multi-color highlight
─────────────────────────────────────────────────────────────────────
Tokens
bg #0d1117 (deep terminal)
ink #e6edf3
muted #7d8590
accent #4ade80 (green — primary output)
accent2#fbbf24 (amber — string/warn)
accent3#f472b6 (magenta — variable)
accent4#60a5fa (blue — function/path)
Fonts
mono (everything) — ui-monospace, "SF Mono", Menlo, monospace
(Real JetBrains Mono would need a woff2 ship; mono fallback fine.)
Best with
layouts: split, pip
frames: hairline, clean
content: 技术分析 / 代码片段 / 性能数据 / 工程思考
Notes
- "Blinking cursor" must be a CSS animation, NOT a data-anim. Allowed
because pure CSS @keyframes on a single visual indicator is harmless.
- For animated reveal of lines, use data-anim="fade-in" per line.
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · terminal</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-terminal">
<style>
.card[data-card-id="ref-terminal"] .root {
--bg: #0d1117;
--ink: #e6edf3;
--muted: #7d8590;
--green: #4ade80;
--amber: #fbbf24;
--magenta: #f472b6;
--blue: #60a5fa;
--font-mono: ui-monospace, "SF Mono", Menlo, "Courier New", monospace;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background: var(--bg);
color: var(--ink);
padding: 36px 48px;
box-sizing: border-box;
font: 28px/1.55 var(--font-mono);
}
.card[data-card-id="ref-terminal"] .ascii-frame {
position: absolute;
inset: 16px;
border: 2px solid #2c333e;
border-radius: 6px;
box-shadow:
inset 0 0 0 1px #1a1f27,
0 0 0 1px #06080c;
}
.card[data-card-id="ref-terminal"] .titlebar {
position: absolute;
left: 36px;
top: 12px;
padding: 0 8px;
background: var(--bg);
font: 600 14px/1 var(--font-mono);
color: var(--muted);
letter-spacing: 0.12em;
}
.card[data-card-id="ref-terminal"] .content {
position: relative;
padding: 18px 12px;
display: flex;
flex-direction: column;
gap: 14px;
}
.card[data-card-id="ref-terminal"] .prompt {
color: var(--green);
}
.card[data-card-id="ref-terminal"] .line .blue {
color: var(--blue);
}
.card[data-card-id="ref-terminal"] .line .amber {
color: var(--amber);
}
.card[data-card-id="ref-terminal"] .line .pink {
color: var(--magenta);
}
.card[data-card-id="ref-terminal"] .line .green {
color: var(--green);
}
.card[data-card-id="ref-terminal"] .line .muted {
color: var(--muted);
}
.card[data-card-id="ref-terminal"] .kicker {
color: var(--muted);
font: 600 16px/1 var(--font-mono);
letter-spacing: 0.22em;
margin-bottom: 4px;
}
.card[data-card-id="ref-terminal"] .headline {
font: 700 56px/1.15 var(--font-mono);
color: var(--ink);
margin: 4px 0 14px;
}
.card[data-card-id="ref-terminal"] .headline .hl {
background: rgba(74, 222, 128, 0.18);
color: var(--green);
padding: 0 6px;
}
.card[data-card-id="ref-terminal"] .cursor {
display: inline-block;
width: 14px;
height: 28px;
background: var(--green);
margin-left: 4px;
vertical-align: -4px;
animation: ref-term-blink 1s steps(1) infinite;
}
@keyframes ref-term-blink {
50% {
opacity: 0;
}
}
</style>
<div class="root">
<div class="ascii-frame"></div>
<span class="titlebar">~/notes/takeaway-007.md</span>
<div class="content">
<div class="kicker" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.3">
$ cat takeaway
</div>
<h2
class="headline"
data-anim="fade-in"
data-anim-at="0.25"
data-anim-duration="0.45"
>
缓存命中率提升到 <span class="hl">92%</span>
</h2>
<div class="line" data-anim="fade-in" data-anim-at="0.55" data-anim-duration="0.35">
<span class="prompt">$</span> bench --tier <span class="amber">"hot"</span>
<span class="muted">--n 10k</span>
</div>
<div class="line" data-anim="fade-in" data-anim-at="0.8" data-anim-duration="0.35">
<span class="muted">→</span> <span class="blue">p50</span>=<span class="green"
>12ms</span
>
<span class="blue">p99</span>=<span class="green">38ms</span>
<span class="pink">hit</span>=<span class="green">92.4%</span>
</div>
<div class="line" data-anim="fade-in" data-anim-at="1.05" data-anim-duration="0.35">
<span class="muted">// before this change: hit=63%, p99=210ms</span>
</div>
<div class="line" data-anim="fade-in" data-anim-at="1.35" data-anim-duration="0.3">
<span class="prompt">$</span><span class="cursor"></span>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,170 @@
<!--
Style: whiteboard — paper · Caveat handwriting · sketched borders · marker highlight
─────────────────────────────────────────────────────────────────────
Tokens
bg #fdf6e3 (warm paper)
ink #1a1a1a
muted #6e6a5b
accent #ff6b35 (orange marker)
accent2#2557a7 (blue pen — annotations)
accent3#ffe066 (yellow highlighter)
Fonts
headline & body — Caveat (handwriting); falls back to "ui-serif, cursive"
annotations — Caveat
Best with
layouts: pip, overlay, split
frames: polaroid, clean
content: 教程 / 解构 / 草图思考 / 灵感整理
Notes
- SVG strokes have subtle path jitter to look hand-drawn.
- data-anim "draw-path" is ideal for the sketched border + highlights.
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · whiteboard</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-whiteboard">
<style>
.card[data-card-id="ref-whiteboard"] .root {
--bg: #fdf6e3;
--ink: #1a1a1a;
--muted: #6e6a5b;
--accent: #ff6b35;
--accent2: #2557a7;
--accent3: #ffe066;
--font-hand: "Caveat", "LXGW WenKai TC", ui-serif, cursive;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background-color: var(--bg);
background-image:
radial-gradient(circle at 30% 20%, rgba(0, 0, 0, 0.025) 0%, transparent 50%),
radial-gradient(circle at 80% 70%, rgba(0, 0, 0, 0.02) 0%, transparent 50%);
padding: 48px 56px;
box-sizing: border-box;
display: flex;
flex-direction: column;
justify-content: center;
gap: 26px;
color: var(--ink);
font-family: var(--font-hand);
}
.card[data-card-id="ref-whiteboard"] .sketch-border {
position: absolute;
inset: 16px;
pointer-events: none;
}
.card[data-card-id="ref-whiteboard"] .sketch-border path {
stroke: var(--ink);
stroke-width: 3;
fill: none;
stroke-linecap: round;
stroke-linejoin: round;
}
.card[data-card-id="ref-whiteboard"] .kicker {
align-self: flex-start;
font: 700 32px/1 var(--font-hand);
color: var(--accent);
transform: rotate(-2deg);
padding-left: 8px;
}
.card[data-card-id="ref-whiteboard"] .title {
margin: 0;
font: 700 120px/1 var(--font-hand);
color: var(--ink);
}
.card[data-card-id="ref-whiteboard"] .marker {
position: relative;
display: inline-block;
padding: 0 8px;
color: var(--ink);
}
.card[data-card-id="ref-whiteboard"] .marker::before {
content: "";
position: absolute;
left: 0;
right: 0;
top: 30%;
bottom: 18%;
background: var(--accent3);
z-index: -1;
transform: skewX(-4deg);
}
.card[data-card-id="ref-whiteboard"] .detail {
margin: 0;
font: 400 40px/1.4 var(--font-hand);
color: var(--muted);
max-width: 92%;
}
.card[data-card-id="ref-whiteboard"] .note {
align-self: flex-start;
padding: 6px 12px;
font: 600 28px/1 var(--font-hand);
color: var(--accent2);
border-bottom: 3px wavy var(--accent2);
transform: rotate(-1deg);
}
</style>
<div class="root">
<svg class="sketch-border" viewBox="0 0 1888 1048" preserveAspectRatio="none">
<path
d="M 12 12 L 1876 16 L 1872 1036 L 16 1032 Z"
data-anim="draw-path"
data-anim-at="0.05"
data-anim-duration="0.8"
/>
</svg>
<span class="kicker" data-anim="fade-in" data-anim-at="0.1" data-anim-duration="0.4">
✎ TAKEAWAY
</span>
<h2 class="title" data-anim="fade-in" data-anim-at="0.4" data-anim-duration="0.5">
把复杂问题<span class="marker">画出来</span>。
</h2>
<p class="detail" data-anim="fade-in" data-anim-at="0.85" data-anim-duration="0.45">
文字让人争辩,图让人对齐。当所有人都在白板前看同一张图,分歧自然消失。
</p>
<span class="note" data-anim="fade-in" data-anim-at="1.2" data-anim-duration="0.4">
← 试试每次会议都画
</span>
</div>
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,206 @@
<!--
Style: xhs (小红书) — cream + hot pink · chips · #hashtags · ❤️💬 row
─────────────────────────────────────────────────────────────────────
Tokens
bg #fff5e9 (warm cream)
ink #1d1418
muted #8a7a78
accent #ff2e63 (hot pink — chip + interaction icon)
accent2#ff8a4c (orange — tag)
accent3#f0c419 (yellow — pin)
Fonts
headline & body — Noto Sans SC fallback: ui-sans-serif, system-ui, "PingFang SC", sans-serif
Best with
layouts: overlay, stack (especially in portrait/9:16)
frames: clean, polaroid
content: 社交剪辑 / 生活方式 / 种草 / 短视频高光
-->
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>style · xhs (小红书)</title>
<style>
html,
body {
margin: 0;
padding: 0;
background: #0a0c12;
font-family: ui-sans-serif, system-ui, sans-serif;
}
.stage {
position: relative;
width: 1920px;
height: 1080px;
transform-origin: top left;
transform: scale(0.5);
overflow: hidden;
}
.card-host {
position: absolute;
left: 0;
top: 0;
width: 1920px;
height: 1080px;
}
</style>
</head>
<body>
<div class="stage">
<div class="card-host">
<div class="card" data-card-id="ref-xhs">
<style>
.card[data-card-id="ref-xhs"] .root {
--bg: #fff5e9;
--ink: #1d1418;
--muted: #8a7a78;
--accent: #ff2e63;
--accent2: #ff8a4c;
--accent3: #f0c419;
--font-sans: ui-sans-serif, system-ui, "PingFang SC", "Hiragino Sans GB", sans-serif;
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
background: var(--bg);
color: var(--ink);
font-family: var(--font-sans);
padding: 36px 44px;
box-sizing: border-box;
display: flex;
flex-direction: column;
gap: 22px;
}
.card[data-card-id="ref-xhs"] .user-row {
display: flex;
align-items: center;
gap: 14px;
}
.card[data-card-id="ref-xhs"] .avatar {
width: 56px;
height: 56px;
border-radius: 50%;
background: linear-gradient(135deg, #ff2e63, #ff8a4c);
box-shadow:
0 0 0 3px #fff,
0 0 0 4px rgba(255, 46, 99, 0.3);
}
.card[data-card-id="ref-xhs"] .user-info {
flex: 1;
}
.card[data-card-id="ref-xhs"] .user-name {
font: 700 22px/1.1 var(--font-sans);
color: var(--ink);
}
.card[data-card-id="ref-xhs"] .user-sub {
font: 400 16px/1.3 var(--font-sans);
color: var(--muted);
}
.card[data-card-id="ref-xhs"] .follow {
padding: 8px 20px;
border-radius: 999px;
background: var(--accent);
color: #fff;
font: 700 16px/1 var(--font-sans);
}
.card[data-card-id="ref-xhs"] .title {
margin: 0;
font: 800 84px/1.1 var(--font-sans);
color: var(--ink);
letter-spacing: -0.01em;
}
.card[data-card-id="ref-xhs"] .title .heart {
color: var(--accent);
}
.card[data-card-id="ref-xhs"] .detail {
margin: 0;
font: 500 28px/1.5 var(--font-sans);
color: var(--ink);
max-width: 94%;
}
.card[data-card-id="ref-xhs"] .tags {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.card[data-card-id="ref-xhs"] .tag {
padding: 8px 18px;
border-radius: 999px;
background: rgba(255, 46, 99, 0.12);
color: var(--accent);
font: 600 18px/1 var(--font-sans);
}
.card[data-card-id="ref-xhs"] .tag.orange {
background: rgba(255, 138, 76, 0.16);
color: var(--accent2);
}
.card[data-card-id="ref-xhs"] .tag.yellow {
background: rgba(240, 196, 25, 0.18);
color: #a98209;
}
.card[data-card-id="ref-xhs"] .interactions {
display: flex;
gap: 28px;
margin-top: auto;
padding-top: 14px;
border-top: 1px solid rgba(0, 0, 0, 0.06);
font: 700 22px/1 var(--font-sans);
color: var(--ink);
}
.card[data-card-id="ref-xhs"] .interactions span {
display: inline-flex;
align-items: center;
gap: 8px;
}
.card[data-card-id="ref-xhs"] .interactions .heart-ic {
color: var(--accent);
font-size: 26px;
}
</style>
<div class="root">
<div class="user-row" data-anim="fade-in" data-anim-at="0.05" data-anim-duration="0.4">
<div class="avatar"></div>
<div class="user-info">
<div class="user-name">@小研究员</div>
<div class="user-sub">关注我,看我每天拆一段视频 · 18分钟前</div>
</div>
<div class="follow">+ 关注</div>
</div>
<h2 class="title" data-anim="fade-in" data-anim-at="0.3" data-anim-duration="0.5">
亲测有效!<span class="heart">♥</span> 30 秒抓住注意力的小技巧
</h2>
<p class="detail" data-anim="fade-in" data-anim-at="0.7" data-anim-duration="0.45">
开头别废话——直接抛结论。听众的大脑在前 3 秒就决定要不要继续,
这是平台算法之外,最朴素也最重要的事实。
</p>
<div class="tags" data-anim="fade-in" data-anim-at="1.0" data-anim-duration="0.4">
<span class="tag">#内容创作</span>
<span class="tag orange">#播客剪辑</span>
<span class="tag yellow">#开头技巧</span>
</div>
<div
class="interactions"
data-anim="fade-in"
data-anim-at="1.25"
data-anim-duration="0.4"
>
<span><span class="heart-ic">♥</span> 12.4k</span>
<span>💬 386</span>
<span>⭐ 891</span>
<span
style="margin-left: auto; color: var(--muted); font-weight: 400; font-size: 18px"
>📤 分享</span
>
</div>
</div>
</div>
</div>
</div>
</body>
</html>