版の配色
1920 × 1080 作品として見る 版そのものを描画 — どの倍率でも字は潰れません 骨格・余白・カラムを重ねた状態
1920 × 1080 作品として見る 版そのものを描画 — どの倍率でも字は潰れません 骨格・余白・カラムを重ねた状態
コピーして貼るか、ファイルに保存して渡す。ネットにつながらない環境には「全部入り」を 1 つ渡せば足りる。
このパネルの中身を、URL の先にあるファイルの中身まで含めて 1 つにまとめた Markdown — 大きいのでファイルで渡す(コピーは 32KB まで)
以下の仕様でスライドを 1 枚作ってください。 - 版面 1920 × 1080 - 余白 上 100 右 160 下 100 左 160 ## 強調 4 行目のみ。手段は 塗り だけ。ほかは変えない ## 文字(版面 1920px に対する px) title 42px / 700 / 字間 0.02em legend 17px / 400 date 26px / 700 / 字間 -0.01em / 等幅数字 ago 15px / 400 event 30px / 500 / 行送り 1.4 detail 17px / 400 / 行送り 1.75 fixedLabel 14px / 500 / 字間 0.14em fixedValue 19px / 500 / 行送り 1.55 ## 配色 地 #FFFFFF / 面 #F4F6F7 / 文字 #121715 / 補助 #6F7975 / 強調 #12705C / 罫 #D5DCDA ## 外すと崩れる点 - 軸の位置は固定する。日付列の幅で軸が動くと、間隔が文字数で決まる - 過去も未来も同じ描き方にして、違いは「いま」の一点だけに絞る - 出来事だけを並べない。各節目で何が確定したかを併記する 内容は[ここに自分の内容を書く]に置き換えてください。寸法と配色はそのまま守ってください。 正確に再現する場合は、この HTML をそのまま使ってください: https://design-vault.pages.dev/designs/timeline-vertical-milestones/pattern.html
/ai/designs/timeline-vertical-milestones.json
format: slide-16x9
density: medium
layout:
kind: timeline
canvas:
w: 1920
h: 1080
margin:
top: 100
right: 160
bottom: 100
left: 160
emphasis:
row: 4
via:
- fill
type:
title:
size: 42
weight: 700
tracking: 0.02em
legend:
size: 17
weight: 400
date:
size: 26
weight: 700
tracking: -0.01em
numeric: tabular
ago:
size: 15
weight: 400
event:
size: 30
weight: 500
leading: 1.4
detail:
size: 17
weight: 400
leading: 1.75
fixedLabel:
size: 14
weight: 500
tracking: 0.14em
fixedValue:
size: 19
weight: 500
leading: 1.55
colors:
ground: "#FFFFFF"
surface: "#F4F6F7"
ink: "#121715"
muted: "#6F7975"
accent: "#12705C"
rule: "#D5DCDA"
rules:
- 軸の位置は固定する。日付列の幅で軸が動くと、間隔が文字数で決まる
- 過去も未来も同じ描き方にして、違いは「いま」の一点だけに絞る
- 出来事だけを並べない。各節目で何が確定したかを併記する{
"format": "slide-16x9",
"density": "medium",
"layout": {
"kind": "timeline",
"canvas": {
"w": 1920,
"h": 1080
},
"margin": {
"top": 100,
"right": 160,
"bottom": 100,
"left": 160
},
"emphasis": {
"row": 4,
"via": [
"fill"
]
}
},
"type": {
"title": {
"size": 42,
"weight": 700,
"tracking": "0.02em"
},
"legend": {
"size": 17,
"weight": 400
},
"date": {
"size": 26,
"weight": 700,
"tracking": "-0.01em",
"numeric": "tabular"
},
"ago": {
"size": 15,
"weight": 400
},
"event": {
"size": 30,
"weight": 500,
"leading": 1.4
},
"detail": {
"size": 17,
"weight": 400,
"leading": 1.75
},
"fixedLabel": {
"size": 14,
"weight": 500,
"tracking": "0.14em"
},
"fixedValue": {
"size": 19,
"weight": 500,
"leading": 1.55
}
},
"colors": {
"ground": "#FFFFFF",
"surface": "#F4F6F7",
"ink": "#121715",
"muted": "#6F7975",
"accent": "#12705C",
"rule": "#D5DCDA"
},
"rules": [
"軸の位置は固定する。日付列の幅で軸が動くと、間隔が文字数で決まる",
"過去も未来も同じ描き方にして、違いは「いま」の一点だけに絞る",
"出来事だけを並べない。各節目で何が確定したかを併記する"
]
} /designs/timeline-vertical-milestones/pattern.html — 版そのものの HTML。書体の部分集合ごと同梱で、開けばこの絵がそのまま出ます。
<!doctype html>
<meta charset="utf-8">
<title>縦の年表 — 節目だけを軸に打つ</title>
<meta name="dv-font" content="Zen Kaku Gothic New:400;500;700">
<link rel="stylesheet" href="./font.css">
<style>
:root {
--ground: #FFFFFF;
--surface: #F4F6F7;
--ink: #121715;
--muted: #6F7975;
--accent: #12705C;
--rule: #D5DCDA;
}
* { box-sizing: border-box; margin: 0; }
html, body { width: 1920px; height: 1080px; }
body { font-family: "Zen Kaku Gothic New", "IPAGothic", sans-serif; }
.artboard {
width: 1920px; height: 1080px;
background: var(--ground); color: var(--ink);
padding: 100px 160px;
}
.content { height: 100%; display: grid; grid-template-rows: auto 1fr; gap: 48px; }
.head { display: flex; align-items: baseline; justify-content: space-between; gap: 64px;
border-bottom: 1px solid var(--rule); padding-bottom: 26px; }
.title { font-size: 42px; font-weight: 700; letter-spacing: .02em; }
.legend { font-size: 17px; font-weight: 400; color: var(--muted); }
/* 軸は 1 本、左から 240px の位置に固定する。日付列の幅で軸が動くと、
節目の間隔が「文字数」で決まってしまい、年表として読めなくなる。 */
.rail { position: relative; display: grid; grid-template-rows: repeat(5, 1fr); }
.rail::before { content: ""; position: absolute; left: 240px; top: 0; bottom: 0;
width: 1px; background: var(--rule); }
.mile { position: relative; display: grid; grid-template-columns: 240px 1fr 400px; align-items: center; gap: 72px; }
.when { text-align: right; padding-right: 40px; display: grid; gap: 6px; }
.date { font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.ago { font-size: 15px; font-weight: 400; color: var(--muted); }
/* 節目の丸は軸の上に置く。線の脇に置くと、どの高さの出来事か読み取れない。 */
.pin { position: absolute; left: 240px; top: 50%; transform: translate(-50%, -50%);
width: 15px; height: 15px; border-radius: 50%;
background: var(--ground); border: 2px solid var(--muted); }
.what { display: grid; gap: 10px; }
.event { font-size: 30px; font-weight: 500; line-height: 1.4; }
.detail { font-size: 17px; font-weight: 400; line-height: 1.75; color: var(--muted); max-width: 900px; }
/* 右端は「その節目で何が確定したか」。出来事だけを並べると、
年表は読めても「いま何が決まっているのか」が分からない。 */
.fixed { border-left: 1px solid var(--rule); padding-left: 36px; display: grid; gap: 6px; }
.fixedLabel { font-size: 14px; font-weight: 500; letter-spacing: .14em; color: var(--muted); }
.fixedValue { font-size: 19px; font-weight: 500; line-height: 1.55; }
.mile[data-emphasis] .fixedValue { color: var(--accent); }
/* 現在地だけを塗る。過去も未来も同じ描き方にして、違いは「いま」の一点に絞る。 */
.mile[data-emphasis] .pin { background: var(--accent); border-color: var(--accent); width: 21px; height: 21px; }
.mile[data-emphasis] .date { color: var(--accent); }
.mile[data-emphasis] .event { font-weight: 700; }
.now { font-size: 14px; font-weight: 700; letter-spacing: .18em; color: var(--accent); }
</style>
<div class="artboard" data-artboard>
<div class="content" data-content>
<div class="head">
<h1 class="title" data-type="title">この案件の経緯 —— 5 つの節目</h1>
<p class="legend" data-type="legend">塗った丸が現在地。日付は合意した日であって、着手した日ではありません</p>
</div>
<div class="rail">
<div class="mile" data-row="1">
<div class="when"><p class="date" data-type="date">2025.04</p><p class="ago" data-type="ago">17 か月前</p></div>
<div class="pin"></div>
<div class="what">
<p class="event" data-type="event">現行システムの延長保守が終了と通知</p>
<p class="detail" data-type="detail">保守元から 2027 年 3 月での打ち切りを受領。ここが全体の期限になりました。</p>
</div>
<div class="fixed"><p class="fixedLabel" data-type="fixedLabel">期限</p><p class="fixedValue" data-type="fixedValue">2027 年 3 月 31 日</p></div>
</div>
<div class="mile" data-row="2">
<div class="when"><p class="date">2025.11</p><p class="ago">10 か月前</p></div>
<div class="pin"></div>
<div class="what">
<p class="event">社内の現状調査を完了</p>
<p class="detail">台帳に無い連携が 23 本見つかり、うち 9 本が現在も日次で動いていました。</p>
</div>
<div class="fixed"><p class="fixedLabel">対象</p><p class="fixedValue">連携 23 本 / 帳票 41 種</p></div>
</div>
<div class="mile" data-row="3">
<div class="when"><p class="date">2026.05</p><p class="ago">4 か月前</p></div>
<div class="pin"></div>
<div class="what">
<p class="event">3 社による比較検討を開始</p>
<p class="detail">評価軸は「止めずに移せるか」の 1 点。価格は同水準だったため決め手になりませんでした。</p>
</div>
<div class="fixed"><p class="fixedLabel">評価軸</p><p class="fixedValue">止めずに移せるか の 1 点</p></div>
</div>
<div class="mile" data-row="4" data-emphasis="fill">
<div class="when"><p class="date">2026.09</p><p class="now">本日</p></div>
<div class="pin"></div>
<div class="what">
<p class="event">移行方式のご判断をいただく</p>
<p class="detail">本日決めていただくのは方式のみです。体制と日程は方式が決まってから引きます。</p>
</div>
<div class="fixed"><p class="fixedLabel">本日決めるもの</p><p class="fixedValue">移行方式のみ</p></div>
</div>
<div class="mile" data-row="5">
<div class="when"><p class="date">2027.03</p><p class="ago">6 か月後</p></div>
<div class="pin"></div>
<div class="what">
<p class="event">旧環境の停止(動かせない期限)</p>
<p class="detail">保守切れの当日。ここから逆算すると、着手は 11 月が最後の機会になります。</p>
</div>
<div class="fixed"><p class="fixedLabel">着手の最終期限</p><p class="fixedValue">2026 年 11 月</p></div>
</div>
</div>
</div>
</div>
/designs/timeline-vertical-milestones/font.css — 全部入りには入れていない
/* dv-subset v2 — generated by scripts/subset-font.mjs. Do not edit.
* font Zen Kaku Gothic New 400;500;700
* chars 153 (ffb305647266864f)
*
* pattern.html の文字だけを含む部分集合。描画時に外部へ取りに行かないよう同梱する。
* 版の文字を変えたら取り直すこと — 忘れると足りない字が豆腐になる。
* その取り忘れは pattern-entries.test.ts が上の指紋で検出する。
*/
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 400;
font-display: block;
src: url(./font-0.woff2) format('woff2');
unicode-range: U+2e-37, U+39, U+2014, U+3001-3002, U+300c-300d, U+3042, U+3044, U+3046, U+304b-3054, U+3057-305c, U+305f-306b, U+306e-3070, U+307e-307f, U+3081-3082, U+3088-308c, U+3092-3094, U+3099, U+30b7-30ba, U+30c6-30c7, U+30e0, U+4e38, U+4e86, U+4ed8, U+4ef6, U+4f1a, U+4f53, U+4fa1, U+4fdd, U+505c, U+5143, U+5168, U+5185, U+5207, U+5224, U+5236, U+524d, U+52d5, U+53d7, U+53f0, U+5408, U+540c, U+5728, U+5730, U+5857, U+5883, U+59cb, U+5b88, U+5b8c, U+5bfe, U+5e33, U+5e74, U+5ef6, U+5f0f, U+5f15, U+5f53, U+5f8c, U+610f, U+624b, U+6253, U+643a, U+65ad, U+65b9, U+65e5, U+65e7, U+6700, U+6708, U+671f, U+672c, U+67fb, U+683c, U+6848, U+691c, U+6a5f, U+6b21, U+6b62, U+6bd4, U+6c34, U+6c7a, U+6e96, U+70b9, U+7121, U+72b6, U+73fe, U+74b0, U+76ee, U+7740, U+77e5, U+793e, U+7968, U+79fb, U+7a0b, U+7a2e, U+7b97, U+7bc0, U+7d42, U+7d4c, U+7def, U+7e26, U+884c, U+8868, U+898b, U+8a0e, U+8a55, U+8abf, U+8c61, U+8ef8, U+8f03, U+9006, U+901a, U+9023, U+9577, U+958b, U+9650, U+9818, U+ff08-ff09;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 500;
font-display: block;
src: url(./font-1.woff2) format('woff2');
unicode-range: U+2e-37, U+39, U+2014, U+3001-3002, U+300c-300d, U+3042, U+3044, U+3046, U+304b-3054, U+3057-305c, U+305f-306b, U+306e-3070, U+307e-307f, U+3081-3082, U+3088-308c, U+3092-3094, U+3099, U+30b7-30ba, U+30c6-30c7, U+30e0, U+4e38, U+4e86, U+4ed8, U+4ef6, U+4f1a, U+4f53, U+4fa1, U+4fdd, U+505c, U+5143, U+5168, U+5185, U+5207, U+5224, U+5236, U+524d, U+52d5, U+53d7, U+53f0, U+5408, U+540c, U+5728, U+5730, U+5857, U+5883, U+59cb, U+5b88, U+5b8c, U+5bfe, U+5e33, U+5e74, U+5ef6, U+5f0f, U+5f15, U+5f53, U+5f8c, U+610f, U+624b, U+6253, U+643a, U+65ad, U+65b9, U+65e5, U+65e7, U+6700, U+6708, U+671f, U+672c, U+67fb, U+683c, U+6848, U+691c, U+6a5f, U+6b21, U+6b62, U+6bd4, U+6c34, U+6c7a, U+6e96, U+70b9, U+7121, U+72b6, U+73fe, U+74b0, U+76ee, U+7740, U+77e5, U+793e, U+7968, U+79fb, U+7a0b, U+7a2e, U+7b97, U+7bc0, U+7d42, U+7d4c, U+7def, U+7e26, U+884c, U+8868, U+898b, U+8a0e, U+8a55, U+8abf, U+8c61, U+8ef8, U+8f03, U+9006, U+901a, U+9023, U+9577, U+958b, U+9650, U+9818, U+ff08-ff09;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 700;
font-display: block;
src: url(./font-2.woff2) format('woff2');
unicode-range: U+2e-37, U+39, U+2014, U+3001-3002, U+300c-300d, U+3042, U+3044, U+3046, U+304b-3054, U+3057-305c, U+305f-306b, U+306e-3070, U+307e-307f, U+3081-3082, U+3088-308c, U+3092-3094, U+3099, U+30b7-30ba, U+30c6-30c7, U+30e0, U+4e38, U+4e86, U+4ed8, U+4ef6, U+4f1a, U+4f53, U+4fa1, U+4fdd, U+505c, U+5143, U+5168, U+5185, U+5207, U+5224, U+5236, U+524d, U+52d5, U+53d7, U+53f0, U+5408, U+540c, U+5728, U+5730, U+5857, U+5883, U+59cb, U+5b88, U+5b8c, U+5bfe, U+5e33, U+5e74, U+5ef6, U+5f0f, U+5f15, U+5f53, U+5f8c, U+610f, U+624b, U+6253, U+643a, U+65ad, U+65b9, U+65e5, U+65e7, U+6700, U+6708, U+671f, U+672c, U+67fb, U+683c, U+6848, U+691c, U+6a5f, U+6b21, U+6b62, U+6bd4, U+6c34, U+6c7a, U+6e96, U+70b9, U+7121, U+72b6, U+73fe, U+74b0, U+76ee, U+7740, U+77e5, U+793e, U+7968, U+79fb, U+7a0b, U+7a2e, U+7b97, U+7bc0, U+7d42, U+7d4c, U+7def, U+7e26, U+884c, U+8868, U+898b, U+8a0e, U+8a55, U+8abf, U+8c61, U+8ef8, U+8f03, U+9006, U+901a, U+9023, U+9577, U+958b, U+9650, U+9818, U+ff08-ff09;
}
出典を持たない自作パターン。pattern.html が版そのもので、cover.png と frontmatter の
layout / type / colors はどちらもそこから機械的に測った結果。編集するのは pattern.html
だけで、寸法を手で書き直すことはない。
A self-authored pattern. pattern.html is the artboard itself; both cover.png and the
measurements in the frontmatter are derived from it, so the three cannot drift apart.
Edit the artboard, never the numbers.