Design Vault Search use case, structure, colour, notes /
Index Categories Tags 日本語
Back to index

The Whole and the One Part — Two Scales Joined by Two Lines

Annotated
The Whole and the One Part — Two Scales Joined by Two Lines
140 96

1920 × 1080 Seen as a design

Take it with you

Copy and paste, or save a file and hand it over. For a machine with no network, one “Everything” file is enough.

Everything

zoom-inset-whole-detail-everything.md

Everything in this panel, including the contents behind each URL, in one Markdown file

Prompt

1.4 KB
Produce one slide to the following specification.

- Canvas 1920 × 1080
- Margin top 96 right 140 bottom 96 left 140

## Type (px against a 1920px canvas)
title  44px / 700 / tracking 0.01em / leading 1.3
window  20px / 500 / leading 1.5
sectionLabel  20px / 500 / leading 1.4
nodeName  22px / 700 / leading 1.3
insetTitle  26px / 700 / leading 1.3
itemNote  20px / 400 / leading 1.5
note  16px / 400 / leading 1.6

## Colour
Ground #FFFFFF / Surface #F4F6F9 / Ink #131820 / Muted #667183 / Accent #1F5FA8 / Rule #DBE1E9

## Constraints — dropping these breaks it
- Exactly two lines. One reads as a leader line; three or more stop saying where the magnified region ends
- Do not fill the framed box in the whole. Frame and lines alone say 'this is what is enlarged'; a fill makes it ambiguous with 'this is the important one'
- State that the overview has no scale. If box sizes are read as meaningful, the very act of magnifying becomes a lie
- Magnify one place only. Two blow-ups cross their lines, the correspondence stops being readable, and the overview loses its job
- Put finer information in the blow-up. Enlarged at the same granularity, it is not a magnification but wasted space

Replace the content with [your content]. Keep the measurements and colours as given.
For an exact reproduction, use the verbatim HTML at https://design-vault.pages.dev/designs/zoom-inset-whole-detail/pattern.html.

Spec

1.7 KB

/ai/designs/zoom-inset-whole-detail.json

format: slide-16x9
density: medium
layout:
  kind: annotated
  canvas:
    w: 1920
    h: 1080
  margin:
    top: 96
    right: 140
    bottom: 96
    left: 140
type:
  title:
    size: 44
    weight: 700
    tracking: 0.01em
    leading: 1.3
  window:
    size: 20
    weight: 500
    leading: 1.5
  sectionLabel:
    size: 20
    weight: 500
    leading: 1.4
  nodeName:
    size: 22
    weight: 700
    leading: 1.3
  insetTitle:
    size: 26
    weight: 700
    leading: 1.3
  itemNote:
    size: 20
    weight: 400
    leading: 1.5
  note:
    size: 16
    weight: 400
    leading: 1.6
colors:
  ground: "#FFFFFF"
  surface: "#F4F6F9"
  ink: "#131820"
  muted: "#667183"
  accent: "#1F5FA8"
  rule: "#DBE1E9"
rules:
  - Exactly two lines. One reads as a leader line; three or more stop saying where the magnified region ends
  - Do not fill the framed box in the whole. Frame and lines alone say 'this is what is enlarged'; a fill makes it ambiguous with 'this is the important one'
  - State that the overview has no scale. If box sizes are read as meaningful, the very act of magnifying becomes a lie
  - Magnify one place only. Two blow-ups cross their lines, the correspondence stops being readable, and the overview loses its job
  - Put finer information in the blow-up. Enlarged at the same granularity, it is not a magnification but wasted space

Files

pattern.html

6.3 KB

/designs/zoom-inset-whole-detail/pattern.html — The artboard itself, font subset included — open it and this picture draws.

Show contents
<!doctype html>
<meta charset="utf-8">
<title>全体構成と、いま話している一点 — 2 つの縮尺を線で結ぶ</title>
<meta name="dv-font" content="Zen Kaku Gothic New:400;500;700">
<link rel="stylesheet" href="./font.css">
<style>
  /* 色のリテラルはこの :root にだけ置く。以下の規則は var() か color-mix() で名指す。
     区分色は持たない —— 強調するのは「いま話している一点」の 1 か所だけで、
     それ以外の箱に色を与えると、どれが話題なのかが消える。 */
  :root {
    --ground: #FFFFFF;
    --surface: #F4F6F9;
    --ink: #131820;
    --muted: #667183;
    --accent: #1F5FA8;
    --rule: #DBE1E9;
  }

  * { 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 140px;
  }

  .content {
    height: 100%;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
  }

  .head { border-bottom: 2px solid var(--rule); padding-bottom: 28px; }
  .title { font-size: 44px; font-weight: 700; letter-spacing: 0.01em; line-height: 1.3; }
  .window { margin-top: 14px; font-size: 20px; font-weight: 500; line-height: 1.5; color: var(--muted); }

  .body { display: grid; align-content: center; justify-items: center; }

  .figure { display: block; }
  .node { fill: var(--surface); stroke: var(--rule); stroke-width: 2; }
  .flow { fill: none; stroke: var(--muted); stroke-width: 2; }
  /* 拡大しているのがどこかは、枠と 2 本の線だけで言う。全体側の箱を塗って
     しまうと、拡大の対象なのか「重要な構成要素」なのかが区別できない。 */
  .frame { fill: none; stroke: var(--accent); stroke-width: 3; stroke-dasharray: 10 7; }
  .cone { fill: none; stroke: var(--accent); stroke-width: 1.6; stroke-dasharray: 10 7; }
  .panel { fill: var(--ground); stroke: var(--accent); stroke-width: 3; }
  .item { fill: var(--surface); stroke: var(--rule); stroke-width: 2; }
  .section-label { fill: var(--muted); font-size: 20px; font-weight: 500; line-height: 1.4; }
  .node-name { fill: var(--ink); font-size: 22px; font-weight: 700; line-height: 1.3; }
  .inset-title { fill: var(--ink); font-size: 26px; font-weight: 700; line-height: 1.3; }
  .item-note { fill: var(--muted); font-size: 20px; font-weight: 400; line-height: 1.5; }

  .foot { border-top: 1px solid var(--rule); padding-top: 22px; font-size: 16px; font-weight: 400; line-height: 1.6; color: var(--muted); }
</style>

<div class="artboard" data-artboard>
  <div class="content" data-content>
    <div class="head">
      <h1 class="title" data-type="title">全体構成と、いま話している一点 — 2 つの縮尺を線で結ぶ</h1>
      <p class="window" data-type="window">対象は会員基盤の刷新 / 全体図は設計書 v4 の再掲 / 拡大は今回の変更範囲</p>
    </div>

    <div class="body">
      <!-- 等倍で描く。viewBox と width/height を一致させてあるので、
           SVG の中の文字の級数は版面の px とそのまま同じ数字になる。
           画像は置かない —— 公開されるのは版と font.css と woff2 だけなので、
           隣に置いた画像は手元でだけ出て、公開版では静かに欠ける。 -->
      <svg class="figure" width="1640" height="600" viewBox="0 0 1640 600">
        <text class="section-label" data-type="sectionLabel" x="40" y="22" text-anchor="start" dominant-baseline="central">全体構成</text>

        <rect class="node" x="40" y="46" width="200" height="64" rx="8"/>
        <text class="node-name" data-type="nodeName" x="140" y="78" text-anchor="middle" dominant-baseline="central">利用者</text>

        <rect class="node" x="40" y="146" width="200" height="64" rx="8"/>
        <text class="node-name" x="140" y="178" text-anchor="middle" dominant-baseline="central">画面</text>

        <rect class="node" x="40" y="246" width="200" height="64" rx="8"/>
        <text class="node-name" x="140" y="278" text-anchor="middle" dominant-baseline="central">API</text>

        <rect class="node" x="40" y="346" width="200" height="64" rx="8"/>
        <text class="node-name" x="140" y="378" text-anchor="middle" dominant-baseline="central">データベース</text>

        <path class="flow" d="M140 110v36M140 210v36M140 310v36M240 278h56"/>

        <rect class="node" x="300" y="246" width="200" height="64" rx="8"/>
        <text class="node-name" x="400" y="278" text-anchor="middle" dominant-baseline="central">認証基盤</text>

        <rect class="frame" x="288" y="234" width="224" height="88" rx="12"/>

        <path class="cone" d="M512 234L760 40M512 322L760 560"/>

        <text class="section-label" x="760" y="22" text-anchor="start" dominant-baseline="central">拡大</text>
        <rect class="panel" x="760" y="40" width="840" height="520" rx="12"/>
        <text class="inset-title" data-type="insetTitle" x="800" y="90" text-anchor="start" dominant-baseline="central">認証基盤の中身</text>

        <rect class="item" x="800" y="130" width="760" height="120" rx="8"/>
        <text class="node-name" x="830" y="190" text-anchor="start" dominant-baseline="central">トークン発行</text>
        <text class="item-note" x="1530" y="190" text-anchor="end" dominant-baseline="central">有効期限 15 分</text>

        <rect class="item" x="800" y="272" width="760" height="120" rx="8"/>
        <text class="node-name" x="830" y="332" text-anchor="start" dominant-baseline="central">失効リスト</text>
        <text class="item-note" x="1530" y="332" text-anchor="end" dominant-baseline="central">毎分の同期</text>

        <rect class="item" x="800" y="414" width="760" height="120" rx="8"/>
        <text class="node-name" x="830" y="474" text-anchor="start" dominant-baseline="central">監査ログ</text>
        <text class="item-note" x="1530" y="474" text-anchor="end" dominant-baseline="central">1 年保持</text>
      </svg>
    </div>

    <div class="foot" data-type="note">全体図は縮尺を持たない。箱の大きさと距離には意味が無く、意味を持つのは繋がりと、枠が指す一点だけ。</div>
  </div>
</div>

font.css

3.3 KB

/designs/zoom-inset-whole-detail/font.css — Not in Everything

Show contents
/* dv-subset v2 — generated by scripts/subset-font.mjs. Do not edit.
 * font    Zen Kaku Gothic New 400;500;700
 * chars   112 (9ffd9bf3f903768c)
 *
 * 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+2f, U+31-32, U+34-35, U+41, U+49, U+50, U+76, U+2014, U+3001-3002, U+3044, U+304b-3052, U+3055-305a, U+305f-3060, U+3064-306b, U+306e-3070, U+3075-3076, U+307e, U+308a-308b, U+3092, U+3099, U+30af-30b0, U+30b9-30ba, U+30bf-30c0, U+30c6-30c9, U+30d8-30d9, U+30ea, U+30ed, U+30f3, U+30fc, U+4e00, U+4e2d, U+4eca, U+4f1a, U+4f53, U+4fdd, U+5168, U+518d, U+5206, U+5229, U+5237, U+52b9, U+540c, U+5473, U+54e1, U+56de, U+56f2-56f3, U+57fa, U+5909, U+5927, U+5931, U+5bfe, U+5c3a, U+5e74, U+610f, U+6210, U+62e1, U+6301, U+6307, U+63b2, U+65b0, U+66f4, U+66f8, U+6709, U+671f, U+67a0, U+67fb, U+69cb, U+6bce, U+70b9, U+7121, U+7528, U+753b, U+767a, U+76e3-76e4, U+7bb1, U+7bc4, U+7d50, U+7dda, U+7e2e, U+7e4b, U+8005, U+884c, U+8a08, U+8a2d, U+8a3c, U+8a71, U+8a8d, U+8c61, U+8ddd, U+8eab, U+9650, U+96e2, U+9762;
}
@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+2f, U+31-32, U+34-35, U+41, U+49, U+50, U+76, U+2014, U+3001-3002, U+3044, U+304b-3052, U+3055-305a, U+305f-3060, U+3064-306b, U+306e-3070, U+3075-3076, U+307e, U+308a-308b, U+3092, U+3099, U+30af-30b0, U+30b9-30ba, U+30bf-30c0, U+30c6-30c9, U+30d8-30d9, U+30ea, U+30ed, U+30f3, U+30fc, U+4e00, U+4e2d, U+4eca, U+4f1a, U+4f53, U+4fdd, U+5168, U+518d, U+5206, U+5229, U+5237, U+52b9, U+540c, U+5473, U+54e1, U+56de, U+56f2-56f3, U+57fa, U+5909, U+5927, U+5931, U+5bfe, U+5c3a, U+5e74, U+610f, U+6210, U+62e1, U+6301, U+6307, U+63b2, U+65b0, U+66f4, U+66f8, U+6709, U+671f, U+67a0, U+67fb, U+69cb, U+6bce, U+70b9, U+7121, U+7528, U+753b, U+767a, U+76e3-76e4, U+7bb1, U+7bc4, U+7d50, U+7dda, U+7e2e, U+7e4b, U+8005, U+884c, U+8a08, U+8a2d, U+8a3c, U+8a71, U+8a8d, U+8c61, U+8ddd, U+8eab, U+9650, U+96e2, U+9762;
}
@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+2f, U+31-32, U+34-35, U+41, U+49, U+50, U+76, U+2014, U+3001-3002, U+3044, U+304b-3052, U+3055-305a, U+305f-3060, U+3064-306b, U+306e-3070, U+3075-3076, U+307e, U+308a-308b, U+3092, U+3099, U+30af-30b0, U+30b9-30ba, U+30bf-30c0, U+30c6-30c9, U+30d8-30d9, U+30ea, U+30ed, U+30f3, U+30fc, U+4e00, U+4e2d, U+4eca, U+4f1a, U+4f53, U+4fdd, U+5168, U+518d, U+5206, U+5229, U+5237, U+52b9, U+540c, U+5473, U+54e1, U+56de, U+56f2-56f3, U+57fa, U+5909, U+5927, U+5931, U+5bfe, U+5c3a, U+5e74, U+610f, U+6210, U+62e1, U+6301, U+6307, U+63b2, U+65b0, U+66f4, U+66f8, U+6709, U+671f, U+67a0, U+67fb, U+69cb, U+6bce, U+70b9, U+7121, U+7528, U+753b, U+767a, U+76e3-76e4, U+7bb1, U+7bc4, U+7d50, U+7dda, U+7e2e, U+7e4b, U+8005, U+884c, U+8a08, U+8a2d, U+8a3c, U+8a71, U+8a8d, U+8c61, U+8ddd, U+8eab, U+9650, U+96e2, U+9762;
}

Notes

構成の話が長くなると、聞き手は「いまどこの話か」を見失う。全体図を毎回 出し直すのは重く、出さないと迷子になる。拡大図はその中間で、全体を小さく 残したまま一点だけを詳しく見せる。

2 本の線が要点である。1 本では引き出し線と区別が付かず、3 本以上では拡大の 範囲がどこまでなのかを言えなくなる。2 本が張る三角形が、そのまま「ここから ここまでを大きくした」という宣言になる。