版の配色
1920 × 1080 作品として見る 版そのものを描画 — どの倍率でも字は潰れません 骨格・余白・カラムを重ねた状態
1920 × 1080 作品として見る 版そのものを描画 — どの倍率でも字は潰れません 骨格・余白・カラムを重ねた状態
コピーして貼るか、ファイルに保存して渡す。ネットにつながらない環境には「全部入り」を 1 つ渡せば足りる。
このパネルの中身を、URL の先にあるファイルの中身まで含めて 1 つにまとめた Markdown — 大きいのでファイルで渡す(コピーは 32KB まで)
以下の仕様でスライドを 1 枚作ってください。 - 版面 1920 × 1080 - 余白 上 96 右 120 下 96 左 120 ## 強調 3 行目のみ。手段は 塗り だけ。ほかは変えない ## 文字(版面 1920px に対する px) title 42px / 700 / 字間 0.02em legend 17px / 400 q 16px / 500 / 字間 0.12em taskName 22px / 500 / 行送り 1.4 taskOwner 15px / 400 taskSpan 15px / 500 / 等幅数字 nowCap 14px / 700 / 字間 0.1em note 17px / 400 / 行送り 1.8 asof 15px / 500 / 等幅数字 ## 配色 地 #FFFFFF / 面 #F3F5F8 / 文字 #13171D / 補助 #707883 / 強調 #1B57C4 / 罫 #D6DBE2 ## 外すと崩れる点 - 日付を帯の中に入れない。文字が入るかどうかが帯の幅を決めてしまう - 本日の線は帯の領域にだけ引く。見出し列まで伸ばすと紙を切る線に見える - 塗るのは 1 本だけ。遅れると全体が動く工程を指す 内容は[ここに自分の内容を書く]に置き換えてください。寸法と配色はそのまま守ってください。 正確に再現する場合は、この HTML をそのまま使ってください: https://design-vault.pages.dev/designs/gantt-quarter-bands/pattern.html
/ai/designs/gantt-quarter-bands.json
format: slide-16x9
density: high
layout:
kind: gantt
canvas:
w: 1920
h: 1080
margin:
top: 96
right: 120
bottom: 96
left: 120
emphasis:
row: 3
via:
- fill
type:
title:
size: 42
weight: 700
tracking: 0.02em
legend:
size: 17
weight: 400
q:
size: 16
weight: 500
tracking: 0.12em
taskName:
size: 22
weight: 500
leading: 1.4
taskOwner:
size: 15
weight: 400
taskSpan:
size: 15
weight: 500
numeric: tabular
nowCap:
size: 14
weight: 700
tracking: 0.1em
note:
size: 17
weight: 400
leading: 1.8
asof:
size: 15
weight: 500
numeric: tabular
colors:
ground: "#FFFFFF"
surface: "#F3F5F8"
ink: "#13171D"
muted: "#707883"
accent: "#1B57C4"
rule: "#D6DBE2"
rules:
- 日付を帯の中に入れない。文字が入るかどうかが帯の幅を決めてしまう
- 本日の線は帯の領域にだけ引く。見出し列まで伸ばすと紙を切る線に見える
- 塗るのは 1 本だけ。遅れると全体が動く工程を指す{
"format": "slide-16x9",
"density": "high",
"layout": {
"kind": "gantt",
"canvas": {
"w": 1920,
"h": 1080
},
"margin": {
"top": 96,
"right": 120,
"bottom": 96,
"left": 120
},
"emphasis": {
"row": 3,
"via": [
"fill"
]
}
},
"type": {
"title": {
"size": 42,
"weight": 700,
"tracking": "0.02em"
},
"legend": {
"size": 17,
"weight": 400
},
"q": {
"size": 16,
"weight": 500,
"tracking": "0.12em"
},
"taskName": {
"size": 22,
"weight": 500,
"leading": 1.4
},
"taskOwner": {
"size": 15,
"weight": 400
},
"taskSpan": {
"size": 15,
"weight": 500,
"numeric": "tabular"
},
"nowCap": {
"size": 14,
"weight": 700,
"tracking": "0.1em"
},
"note": {
"size": 17,
"weight": 400,
"leading": 1.8
},
"asof": {
"size": 15,
"weight": 500,
"numeric": "tabular"
}
},
"colors": {
"ground": "#FFFFFF",
"surface": "#F3F5F8",
"ink": "#13171D",
"muted": "#707883",
"accent": "#1B57C4",
"rule": "#D6DBE2"
},
"rules": [
"日付を帯の中に入れない。文字が入るかどうかが帯の幅を決めてしまう",
"本日の線は帯の領域にだけ引く。見出し列まで伸ばすと紙を切る線に見える",
"塗るのは 1 本だけ。遅れると全体が動く工程を指す"
]
} /designs/gantt-quarter-bands/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: #F3F5F8;
--ink: #13171D;
--muted: #707883;
--accent: #1B57C4;
--rule: #D6DBE2;
}
* { 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: 96px 120px;
}
.content { height: 100%; display: grid; grid-template-rows: auto auto 1fr auto; gap: 30px; }
.head { display: flex; align-items: baseline; justify-content: space-between; gap: 64px; }
.title { font-size: 42px; font-weight: 700; letter-spacing: .02em; }
.legend { font-size: 17px; font-weight: 400; color: var(--muted); }
/* 見出し列の幅と、帯の領域の始まりは 1 か所で決める。ここがずれると
四半期の目盛と帯が別の座標系を持つことになり、図が嘘をつく。 */
.scaleRow { display: grid; grid-template-columns: 420px 1fr; }
.scale { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid var(--rule); }
.q { padding: 0 0 14px 18px; border-left: 1px solid var(--rule);
font-size: 16px; font-weight: 500; letter-spacing: .12em; color: var(--muted); }
.rows { position: relative; display: grid; grid-template-rows: repeat(6, 1fr); }
.row { display: grid; grid-template-columns: 420px 1fr; align-items: center;
border-bottom: 1px solid var(--rule); }
.task { display: grid; gap: 5px; padding-right: 40px; }
.taskName { font-size: 22px; font-weight: 500; line-height: 1.4; }
.taskOwner { font-size: 15px; font-weight: 400; color: var(--muted); }
/* 日付は帯の中ではなく見出しに置く。短い帯に文字を入れると、
期間の長さではなく「文字が入るかどうか」が帯の幅を決めてしまう。 */
.taskSpan { font-size: 15px; font-weight: 500; color: var(--muted); font-variant-numeric: tabular-nums; }
.track { position: relative; height: 100%; }
.track::before {
content: ""; position: absolute; inset: 0;
background: linear-gradient(to right, var(--rule) 1px, transparent 1px) 0 0 / 25% 100%;
}
.bar { position: absolute; top: 50%; transform: translateY(-50%);
height: 40px; background: var(--surface); border-left: 3px solid var(--muted); }
/* 後戻りできなくなる 1 本だけを塗る。強調は塗り 1 手段で、幅も高さも変えない。 */
.row[data-emphasis] .bar { background: var(--accent); border-left-color: var(--accent); }
.row[data-emphasis] .taskName { font-weight: 700; }
/* 本日の線は帯の領域にだけ引く。見出し列まで伸ばすと、
「予定表の中の今日」ではなく「紙を切る線」に見える。 */
.nowLayer { position: absolute; top: 0; bottom: 0; left: 420px; right: 0; }
.now { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--accent); }
.nowCap { position: absolute; top: -26px; transform: translateX(-50%);
font-size: 14px; font-weight: 700; letter-spacing: .1em; color: var(--accent); white-space: nowrap; }
.foot { display: flex; justify-content: space-between; gap: 48px; }
.note { font-size: 17px; font-weight: 400; line-height: 1.8; color: var(--muted); max-width: 1220px; }
.asof { font-size: 15px; font-weight: 500; color: var(--accent); font-variant-numeric: tabular-nums; }
</style>
<div class="artboard" data-artboard>
<div class="content" data-content>
<div class="head">
<h1 class="title" data-type="title">2026 年度 移行工程</h1>
<p class="legend" data-type="legend">縦線は本日。塗った 1 本が、遅れると全体が動く工程</p>
</div>
<div class="scaleRow">
<div></div>
<div class="scale">
<p class="q" data-type="q">Q1 4-6月</p>
<p class="q">Q2 7-9月</p>
<p class="q">Q3 10-12月</p>
<p class="q">Q4 1-3月</p>
</div>
</div>
<div class="rows">
<div class="row" data-row="1">
<div class="task">
<p class="taskName" data-type="taskName">現行の棚卸し</p>
<p class="taskOwner" data-type="taskOwner">情報システム部 / 3 名</p>
<p class="taskSpan" data-type="taskSpan">4/1 - 6/20</p>
</div>
<div class="track"><div class="bar" style="left:0%; width:22%"></div></div>
</div>
<div class="row" data-row="2">
<div class="task">
<p class="taskName">要件の確定</p>
<p class="taskOwner">業務部門 / 各課 1 名</p>
<p class="taskSpan">5/20 - 9/10</p>
</div>
<div class="track"><div class="bar" style="left:13.7%; width:30.1%"></div></div>
</div>
<div class="row" data-row="3" data-emphasis="fill">
<div class="task">
<p class="taskName">データ移行の設計</p>
<p class="taskOwner">当社 / 常駐 4 名</p>
<p class="taskSpan">8/25 - 12/5</p>
</div>
<div class="track"><div class="bar" style="left:40.3%; width:28.2%"></div></div>
</div>
<div class="row" data-row="4">
<div class="task">
<p class="taskName">並行稼働</p>
<p class="taskOwner">全社 / 2 拠点から</p>
<p class="taskSpan">11/25 - 2/10</p>
</div>
<div class="track"><div class="bar" style="left:65%; width:21.1%"></div></div>
</div>
<div class="row" data-row="5">
<div class="task">
<p class="taskName">拠点展開</p>
<p class="taskOwner">全社 / 残 7 拠点</p>
<p class="taskSpan">1/20 - 3/20</p>
</div>
<div class="track"><div class="bar" style="left:80.3%; width:16.4%"></div></div>
</div>
<div class="row" data-row="6">
<div class="task">
<p class="taskName">旧環境の停止</p>
<p class="taskOwner">情報システム部</p>
<p class="taskSpan">3/10 - 3/31</p>
</div>
<div class="track"><div class="bar" style="left:94.2%; width:5.8%"></div></div>
</div>
<div class="nowLayer">
<div class="now" style="left:45.8%"><span class="nowCap" data-type="nowCap">9/15</span></div>
</div>
</div>
<div class="foot">
<p class="note" data-type="note">Q2 末の要件確定が 2 週間ずれると、データ移行の設計が並行稼働に食い込みます。余裕はこの 1 本にしかありません。</p>
<p class="asof" data-type="asof">本日 2026 年 9 月 15 日</p>
</div>
</div>
</div>
/designs/gantt-quarter-bands/font.css — 全部入りには入れていない
/* dv-subset v2 — generated by scripts/subset-font.mjs. Do not edit.
* font Zen Kaku Gothic New 400;500;700
* chars 113 (4e4a1e7c5aed5448)
*
* 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+2d, U+2f-39, U+51, U+2014, U+3001-3002, U+3042, U+3044, U+304b-304c, U+304f-3050, U+3053-305c, U+305f-3060, U+3063, U+3068-3069, U+306b, U+306e-3070, U+307e-307f, U+3089-308c, U+3093, U+3099, U+30ab-30ac, U+30b7-30ba, U+30bf-30c0, U+30c6-30c9, U+30e0, U+30f3, U+30fc, U+4e26, U+4ef6, U+4f53, U+4f59, U+4f9d, U+505c, U+50cd, U+5168, U+52d5, U+52d9, U+5378, U+5404, U+540d, U+5831, U+5857, U+5883, U+5b58, U+5b9a, U+5c55, U+5de5, U+5e2f, U+5e38, U+5e74, U+5ea6, U+5f53, U+60c5, U+62e0, U+65e5, U+65e7, U+6708, U+671f, U+672b-672c, U+68da, U+696d, U+6b62, U+6b8b, U+70b9, U+73fe, U+74b0, U+78ba, U+793e, U+79fb, U+7a0b, U+7a3c, U+7dda, U+7e26, U+884c, U+88d5, U+8981, U+8a08, U+8a2d, U+8ab2, U+8fbc, U+9031, U+9045, U+90e8, U+9577, U+9580, U+958b, U+9593, U+98df, U+99d0;
}
@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+2d, U+2f-39, U+51, U+2014, U+3001-3002, U+3042, U+3044, U+304b-304c, U+304f-3050, U+3053-305c, U+305f-3060, U+3063, U+3068-3069, U+306b, U+306e-3070, U+307e-307f, U+3089-308c, U+3093, U+3099, U+30ab-30ac, U+30b7-30ba, U+30bf-30c0, U+30c6-30c9, U+30e0, U+30f3, U+30fc, U+4e26, U+4ef6, U+4f53, U+4f59, U+4f9d, U+505c, U+50cd, U+5168, U+52d5, U+52d9, U+5378, U+5404, U+540d, U+5831, U+5857, U+5883, U+5b58, U+5b9a, U+5c55, U+5de5, U+5e2f, U+5e38, U+5e74, U+5ea6, U+5f53, U+60c5, U+62e0, U+65e5, U+65e7, U+6708, U+671f, U+672b-672c, U+68da, U+696d, U+6b62, U+6b8b, U+70b9, U+73fe, U+74b0, U+78ba, U+793e, U+79fb, U+7a0b, U+7a3c, U+7dda, U+7e26, U+884c, U+88d5, U+8981, U+8a08, U+8a2d, U+8ab2, U+8fbc, U+9031, U+9045, U+90e8, U+9577, U+9580, U+958b, U+9593, U+98df, U+99d0;
}
@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+2d, U+2f-39, U+51, U+2014, U+3001-3002, U+3042, U+3044, U+304b-304c, U+304f-3050, U+3053-305c, U+305f-3060, U+3063, U+3068-3069, U+306b, U+306e-3070, U+307e-307f, U+3089-308c, U+3093, U+3099, U+30ab-30ac, U+30b7-30ba, U+30bf-30c0, U+30c6-30c9, U+30e0, U+30f3, U+30fc, U+4e26, U+4ef6, U+4f53, U+4f59, U+4f9d, U+505c, U+50cd, U+5168, U+52d5, U+52d9, U+5378, U+5404, U+540d, U+5831, U+5857, U+5883, U+5b58, U+5b9a, U+5c55, U+5de5, U+5e2f, U+5e38, U+5e74, U+5ea6, U+5f53, U+60c5, U+62e0, U+65e5, U+65e7, U+6708, U+671f, U+672b-672c, U+68da, U+696d, U+6b62, U+6b8b, U+70b9, U+73fe, U+74b0, U+78ba, U+793e, U+79fb, U+7a0b, U+7a3c, U+7dda, U+7e26, U+884c, U+88d5, U+8981, U+8a08, U+8a2d, U+8ab2, U+8fbc, U+9031, U+9045, U+90e8, U+9577, U+9580, U+958b, U+9593, U+98df, U+99d0;
}
出典を持たない自作パターン。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.