/* ==========================================================================
   demo/b1-case-results.css — 支援事例・成果
   --------------------------------------------------------------------------
   カードを横に並べず、1 件を 1 本の記録として積み上げる。
   課題 → 支援 → 成果の読み順と、成果数値の比較しやすさを両立する。
   ========================================================================== */

.case-results {
  background-color: var(--color-bg-tint);
}

.case-results::before {
  content: none;
}

.case-results .container {
  position: relative;
}


.case-results .sec-head__label,
.case-results .sec-head__lead {
  color: var(--color-text);
}

.case-results .sec-head__label::before {
  background-color: var(--navy-800);
}

.case-results .sec-head__title {
  color: var(--color-text-strong);
}

.case-results__list {
  border-block-start: var(--border-width-thick) solid var(--navy-800);
}

/*
  章（01 / 02 / 03）の区切り。
  ★リストの上端（.case-results__list）と同じ «2px の navy-800» に揃える。
    以前は 1px の薄い罫で、章の中にある «成果» の前の罫（2px の navy-600）より
    弱かった。内側の方が強いと «そこで章が変わった» と読まれる。実際に
    SP で «成果の手前で次の章が始まったように見える» という指摘を受けた（三嶋）。
    区切りの強さは «外側 ≧ 内側» を保つこと。
*/
.case-results__item {
  border-block-end: var(--border-width-thick) solid var(--navy-800);
}

.case-result {
  display: grid;
  gap: var(--space-8);
  padding-block: clamp(var(--space-8), 4vw, var(--space-12));
}

.case-result__head {
  min-width: 0;
}

.case-result__index {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
}

.case-result__no {
  color: var(--navy-500);
  font-size: var(--text-3xl);
  font-weight: var(--fw-bold);
  line-height: 1;
}

.case-result__field {
  color: var(--navy-800);
  font-size: var(--text-xl);
  font-weight: var(--fw-bold);
}

.case-result__client {
  margin-top: var(--space-3);
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

.case-result__client span {
  margin-inline-end: var(--space-2);
  color: var(--navy-600);
  font-weight: var(--fw-bold);
}

.case-result__story {
  display: grid;
  gap: var(--space-6);
}

.case-result__row {
  display: grid;
  grid-template-columns: 3.5rem minmax(0, 1fr);
  gap: var(--space-4);
}

.case-result__row > p:last-child {
  font-size: var(--text-base);
  line-height: var(--lh-body);
}

.case-result__label {
  color: var(--navy-600);
  font-size: var(--text-sm);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-wide);
}

.case-result__outcome {
  padding-inline-start: var(--space-6);
  border-inline-start: var(--border-width-thick) solid var(--navy-600);
}

.case-result__result-pre {
  margin-top: var(--space-2);
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}

.case-result__result {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
  margin-top: var(--space-1);
  color: var(--navy-800);
  font-weight: var(--fw-bold);
  line-height: 1.15;
}

.case-result__result-num {
  font-size: clamp(3.5rem, 6vw, 6rem);
  letter-spacing: -0.03em;
}

.case-result__result-post {
  font-size: clamp(var(--text-lg), 2vw, var(--text-2xl));
}

/*
  ★«成果» の左罫の内側の余白は、列の間（gap）と同じ値にする（今林指示）。
    罫の左右で空きが揃う。値は --case-result-gap 1 か所で持つ。片方だけ変えないこと。
*/
@media (min-width: 900px) {
  .case-result {
    --case-result-gap: clamp(var(--space-8), 4vw, var(--space-16));
    grid-template-columns: minmax(10rem, 0.7fr) minmax(24rem, 1.7fr) minmax(15rem, 1fr);
    align-items: start;
    gap: var(--case-result-gap);
  }

  .case-result__outcome {
    padding-inline-start: var(--case-result-gap);
  }
}

/*
  SP では 3 列が縦に積まれるので、«成果» の左罫を上罫に置き換える。
  ★ここは章の中の区切り。1px の薄い罫にする。
    章の区切り（2px の navy-800）より必ず弱くすること。
    ★2px の navy-600 にしていたときは、章の区切りより強くなっていた。
*/
@media (max-width: 899px) {
  .case-result {
    gap: var(--space-5);
  }

  .case-result__outcome {
    padding-block-start: var(--space-4);
    padding-inline-start: 0;
    border-block-start: var(--border-width) solid var(--color-border);
    border-inline-start: 0;
  }

  /*
    ★三嶋指示：SP では «事業開始» と «2か月で黒字化» を 1 行に並べる。
      縦に積むと «事業開始» が宙に浮いて、次の行の主語なのか
      前の行の続きなのか読み取れない。横に並べれば 1 文として読める。

    ★baseline で揃える。中央揃えにすると、14px の «事業開始» が
      56px の数字の «高さの真ん中» に来て、同じ文には見えない。
      文字の足元を揃えて初めて 1 行の文になる。

    ★«成果» は見出しなので、flex-basis: 100% で独立した行に残す。
      並べるのは «前置き＋数値» の 2 つだけ。

    ★flex-wrap: wrap は残す。画面が狭くて入らないときは
      これまでどおり折り返して 2 行になる（壊れずに元の形へ戻る）。
      ★余裕の実測（列幅 390px ／ 430px 表示）：
          事業開始 2か月で黒字化      222px 使用・168px 余り
          利益額を 9.3倍に拡大        224px ・166px 余り
          採用コストを 730万円削減    266px ・124px 余り
        320px 表示（列幅 280px）でも 3 件とも 1 行に入るが、
        いちばん長い «採用コストを 730万円削減» は **余りが 14px** しかない。
        **前置きや単位の文言を伸ばすときは、ここを測り直すこと。**

    ★上の余白は «成果» ラベルとの間だけ。三嶋指示で .case-result__result は 0 にした。
      ★baseline 揃えでは «margin-box の上端から baseline までが最も遠い項目» が
        行の位置を決める。ここでは数字（56px の Oswald）が常にそれに当たるので、
        行の上の空きは **.case-result__result の margin-top で決まる**。
        .case-result__result-pre 側の値は効かない（14px の文字なので届かない）。
  */
  .case-result__outcome {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: var(--space-2);
  }

  .case-result__label {
    flex-basis: 100%;
  }

  .case-result__result-pre {
    margin-top: var(--space-2);
  }

  .case-result__result {
    margin-top: 0;
  }
}

/* --------------------------------------------------------------------------
   TOPページ構成案「支援実績」
   個別事例ではなく、支援の業界・地域・規模・テーマの広がりを量で見せる。
   -------------------------------------------------------------------------- */

.support-results {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background-image:
    radial-gradient(circle at 88% 4%, rgba(86, 80, 185, 0.32), transparent 31%),
    linear-gradient(145deg, var(--navy-800), var(--navy-950));
}

.support-results::before {
  position: absolute;
  z-index: 1;
  inset: 0;
  background-image:
    radial-gradient(circle at 88% 4%, rgba(86, 80, 185, 0.24), transparent 31%),
    linear-gradient(145deg, rgba(9, 4, 89, 0.62), rgba(4, 2, 39, 0.82));
  content: "";
  pointer-events: none;
}

.support-results__background-video {
  position: absolute;
  z-index: 0;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.7) contrast(1.08);
  pointer-events: none;
}

.support-results > .container {
  position: relative;
  z-index: 2;
}

@media (prefers-reduced-motion: reduce) {
  .support-results__background-video {
    display: none;
  }
}

/* ==========================================================================
   上段 — 左：誰に向き合ってきたか／右：その広がり
   --------------------------------------------------------------------------
   ★前は 3 段だった（見出し｜補足 → 30種｜支援してきた業界 → タグ全幅）。
     「30種」と見出し「支援してきた業界」が横に離れて対で読めず、
     タグも全幅で 4 行に伸びて «一覧表» に見えていた。
     数・見出し・タグを 1 列に束ねると、右側だけで «業界の広がり» が完結する。
   ========================================================================== */

.support-results__top {
  display: grid;
  gap: clamp(var(--space-8), 4vw, var(--space-12));
  padding-bottom: clamp(var(--space-8), 4vw, var(--space-12));
  border-bottom: var(--border-width) solid var(--color-border);
}

/*
  ★列比は 1:1。タグ 30 個は 600px 幅で 7 行 347px になり、
    左（ラベル 45 ＋ 見出し 138 ＋ 補足 234）とほぼ同じ高さで釣り合う。実測値。
    660px にしても 7 行のままで縮まないので、右を広げる意味は無い。
*/
@media (min-width: 900px) {
  .support-results__top {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(var(--space-10), 5vw, var(--space-16));
  }
}

/* ==========================================================================
   左
   ========================================================================== */

.support-results .sec-head__label {
  color: var(--navy-200);
}

.support-results .sec-head__label::before {
  background-color: var(--white);
}

/*
  見出し。
  ★2 カラムにして列幅が半分（568px）になったので、40px のままだと
    1 行 10 字しか入らず「中小企業の、」の途中で折れる。
    「地域や業界に根差す中小企業の、」は 15 字あり、この塊は割れない。
    実測：38px までは 3 行で語中折れ、36px で «…中小企業の、／経営課題に…» の
    2 行に収まる。上限を 2.25rem（36px）に下げた。

  ★vw も併記しているのは、狭い画面では列幅も縮むため。
    1024px では列 440px・字も 25.6px になり、15 字は 390px で収まる。

  ★balance は使わない。行長を揃えることを優先して、
    文節より «同じ長さ» を選び「中／小企業」と割ってしまう。
    ここは行長より «語を割らない» 方が大事。
*/
.support-results .sec-head__title {
  color: var(--white);
  font-size: clamp(1.75rem, 2.5vw, 2.25rem);
  word-break: auto-phrase;
  line-break: strict;
}

/*
  見出しと補足のあいだの罫。
  ★セクションの区切りは «罫線と面» で作る、というこのサイトの決めごとに合わせている。
    左カラムが «見出し / 罫 / 本文» の 3 段になり、右の «見出し / 数 / タグ» と
    段数が揃う。
*/
.support-results__intro {
  display: grid;
  gap: var(--space-5);
  margin-top: clamp(var(--space-6), 3vw, var(--space-8));
  padding-top: clamp(var(--space-6), 3vw, var(--space-8));
  color: var(--navy-200);
  border-top: var(--border-width) solid var(--color-border);
}

.support-results__intro p {
  font-size: var(--text-base);
  line-height: var(--lh-body);
  line-break: strict;
}

/* ==========================================================================
   右
   ========================================================================== */

/*
  ★見出しが先、数が後。以前は逆（30種 → 支援してきた業界）で、
    両端揃えだったため対に見えなかった。
    «何の数か» を先に言ってから数を出す方が読み下せる。
*/
.support-results__industry-head {
  margin-bottom: clamp(var(--space-5), 2.5vw, var(--space-8));
}

.support-results__industry-head h3 {
  color: var(--white);
  font-size: var(--text-xl);
}

.support-results__industry-head p {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  margin-top: var(--space-2);
  color: var(--navy-200);
  font-weight: var(--fw-bold);
}

.support-results__industry-head p span {
  color: var(--white);
  /* 全幅だったときより列が狭いので、7rem → 5.5rem に落としている */
  font-size: clamp(3.5rem, 6vw, 5.5rem);
  line-height: 0.8;
}

@media (max-width: 767px) {
  /* ★wrap：入りきらないときは «50業種以上» を次の行へ送る（2026-10-16）。
       10-15 に見出しが «支援してきた業界（一例）» に伸び、1 行のままだと 399px になって
       375px 幅で右が切れていた（grid の列が見出しの幅まで広がり、節の中身ごと押し出す） */
  .support-results__industry-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--space-2) var(--space-5);
  }

  .support-results__industry-head h3,
  .support-results__industry-head p {
    white-space: nowrap;
  }

  .support-results__industry-head p {
    margin-top: 0;
  }
}

.support-results__industries {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.support-results__industries li {
  padding: var(--space-2) var(--space-3);
  background-color: rgba(4, 2, 39, 0.62);
  border: var(--border-width) solid var(--color-border);
  color: var(--navy-100);
  font-size: var(--text-sm);
  line-height: var(--lh-snug);
}

.support-results__dashboard {
  display: grid;
  gap: var(--border-width);
  margin-top: clamp(var(--space-8), 5vw, var(--space-16));
  overflow: hidden;
  background-color: var(--color-border);
  border: var(--border-width) solid var(--color-border);
}

.support-panel {
  padding: clamp(var(--space-6), 3vw, var(--space-10));
  background-color: rgba(4, 2, 39, 0.62);
}

.support-panel__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-5);
}


.support-panel h3 {
  color: var(--white);
  font-size: var(--text-xl);
}


.support-panel progress {
  width: 100%;
  height: 0.35rem;
  overflow: hidden;
  border: 0;
  border-radius: var(--radius-full);
  background-color: rgba(255, 255, 255, 0.12);
  color: var(--navy-400);
}

.support-panel progress::-webkit-progress-bar {
  background-color: rgba(255, 255, 255, 0.12);
  border-radius: var(--radius-full);
}

.support-panel progress::-webkit-progress-value {
  background-color: var(--navy-400);
  border-radius: var(--radius-full);
}

.support-panel progress::-moz-progress-bar {
  background-color: var(--navy-400);
  border-radius: var(--radius-full);
}

.support-renewal__value {
  margin-top: var(--space-8);
  color: var(--white);
  font-weight: var(--fw-bold);
  line-height: 1;
}

@media (max-width: 767px) {
  .support-renewal__value {
    margin-top: var(--space-4);
  }
}

.support-renewal__value span {
  font-size: clamp(5rem, 10vw, 9rem);
}

.support-panel--renewal > progress {
  margin-top: var(--space-6);
}

/*
  ★2 つを等分にしない（三嶋指示）。
    «契約終了 8%» は等分だと «契約終了» と «8%» が 250px 離れて置かれ、
    対になって読めなかった。2 つ目は中身の幅に詰める。
    1 つ目（契約更新 92%）は残りを取るので、罫線は右端まで届く。
*/
.support-renewal__legend {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-4);
  margin-top: var(--space-6);
}

.support-renewal__legend p {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
  padding-block-start: var(--space-3);
  border-block-start: var(--border-width) solid var(--color-border);
  color: var(--navy-200);
  font-size: var(--text-sm);
}

.support-renewal__legend strong {
  color: var(--white);
}

.support-panel__note {
  margin-top: var(--space-5);
  color: var(--navy-300);
  font-size: var(--text-caption);
}

@media (min-width: 768px) {
  .support-results__dashboard {
    /*
      ★契約更新率 48 : ご依頼内容 52（三嶋指示）。
        40:60 → 53:47 → 50:50 と試したうえでの値。
      ★地域別は下の指定で 2 列をまたぐので、この比率の影響を受けない。
    */
    grid-template-columns: minmax(0, 48fr) minmax(0, 52fr);
  }

  /*
    ★かつては 4 枚（地域別・契約更新率・売上規模・ご依頼内容）だったため、
      地域別を 2 行ぶち抜き、最後の 1 枚を全幅にしていた。
      売上規模を外して 3 枚になり、地域別は全幅（下の指定）に変えたので、
      «grid-row: span 2» と «:last-child を全幅» はどちらも不要。
      残すと契約更新率の右が空く。
      いまは 1 行目に地域別（全幅）、2 行目に契約更新率とご依頼内容が並ぶ。
  */
}

@media (max-width: 479px) {
  .case-result__row {
    grid-template-columns: 1fr;
    gap: var(--space-2);
  }
}

/* ==========================================================================
   地域別 — 日本地図（ドット）
   --------------------------------------------------------------------------
   ★参考図（先方提示のドット地図）を写している。
     ・丸ドット。四角にすると図面寄りの印象になる
     ・ラベルは «地方の隣» に直接置く。引き出し線は引かない
     ・沖縄は右下のインセット。斜めの罫で «別枠» を示す
     ・合計は図の左上の箱

   ★形は提示画像のドット位置を読み取ったグリッド（70×51）。
     北海道・本州・四国・九州・沖縄と離島の配置を再現している。

   ★以前あった «地図の横に数値一覧を並べる» 版はここで置き換えた。
     参考図はラベルが図の中にあり、一覧は持たない。
   ========================================================================== */

.japan-map {
  display: block;
  width: 100%;
  height: auto;
  margin-top: 0;
}

@media (max-width: 767px) {
  .support-panel--regions .japan-map {
    width: calc(100% + 2rem);
    max-width: none;
    margin-inline: -1rem;
  }
}

/* 地域ごとの明度は、参考図に合わせた固定値を PHP 側から渡す。 */
.japan-map__dots circle {
  fill: color-mix(in srgb, var(--white) var(--mix), var(--navy-500));
  transform-box: fill-box;
  transform-origin: center;
}

.support-panel--regions.is-visible .japan-map__dots circle {
  animation: japan-dot-land 720ms cubic-bezier(0.22, 0.75, 0.24, 1) both;
  animation-delay: var(--dot-delay);
}

.support-panel--regions.is-visible .japan-map__inset {
  animation: japan-map-copy-in 420ms ease-out 760ms both;
}

.support-panel--regions.is-visible .japan-map__name,
.support-panel--regions.is-visible .japan-map__value {
  animation: japan-map-stat-in 900ms cubic-bezier(0.22, 0.75, 0.24, 1) 950ms both;
}

.support-panel--regions.is-visible .japan-map__total {
  animation: japan-map-copy-in 520ms ease-out 900ms both;
}

@keyframes japan-dot-land {
  0% {
    opacity: 0;
    transform: translateY(calc(0px - var(--drop))) scale(0.72);
  }

  72% {
    opacity: 1;
  }

  88% {
    transform: translateY(1.5px) scale(1.06);
  }

  100% {
    opacity: 1;
    transform: none;
  }
}

@keyframes japan-map-copy-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes japan-map-stat-in {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

/* 沖縄インセットの斜め罫。地図の一部ではないのでドットより弱く */
.japan-map__inset {
  fill: none;
  stroke: rgba(255, 255, 255, 0.24);
  stroke-width: 1.5;
}

.japan-map__name {
  fill: var(--navy-100);
  font-family: var(--font-sans);
  font-size: 23px;
  font-weight: var(--fw-bold);
}

.japan-map__value {
  fill: var(--white);
  font-family: var(--font-numeric);
  font-size: 50px;
  font-weight: var(--fw-bold);
}

/* 単位は数字と同じ大きさにしない。数字を主役にする */
.japan-map__unit {
  font-family: var(--font-sans);
  font-size: 19px;
  font-weight: var(--fw-bold);
}

/*
  合計の箱。
  ★参考図は白地に紺文字。こちらは紺のパネルの上なので、白い箱にすると
    そこだけ光ってドットが読めなくなる。枠＋薄い面に置き換えている。
*/
.japan-map__total rect {
  fill: rgba(255, 255, 255, 0.05);
  stroke: rgba(255, 255, 255, 0.28);
  stroke-width: 1;
}

.japan-map__total-label {
  fill: var(--navy-100);
  font-family: var(--font-sans);
  font-size: 22px;
  font-weight: var(--fw-bold);
}

.japan-map__total-value {
  fill: var(--white);
  font-family: var(--font-numeric);
  font-size: 56px;
  font-weight: var(--fw-bold);
}

.japan-map__total-note {
  fill: var(--navy-200);
  font-family: var(--font-sans);
  font-size: 17px;
}

@media (prefers-reduced-motion: reduce) {
  .support-panel--regions.is-visible .japan-map__dots circle,
  .support-panel--regions.is-visible .japan-map__inset,
  .support-panel--regions.is-visible .japan-map__name,
  .support-panel--regions.is-visible .japan-map__value,
  .support-panel--regions.is-visible .japan-map__total {
    animation: none;
  }
}

/*
  ★地域別だけダッシュボードの 2 列をまたぐ。
    地図は左右にラベルを振り分ける作りなので、半分幅（599px）だと
    ラベルが地図に重なる。実測で重なりが出たため全幅にした。
*/
@media (min-width: 768px) {
  .support-panel--regions {
    grid-column: 1 / -1;
  }
}

/* ==========================================================================
   ご依頼内容 — 構成比の帯
   --------------------------------------------------------------------------
   ★棒 7 本から «1 本の帯» に変更。理由は demo/b1/index.php のコメント参照。

   ★色は白 → navy-500 の 7 段。多い順に明るい。
     隣り合う段の差は 1.25:1 しかなく、色だけでは境目が分からない。
     セグメントの間に 3px の隙間を空けて、境界は «隙間» で示している。
     どの段もパネルの地に対して 4.81:1 以上あり、帯そのものは埋もれない。
   ========================================================================== */

/* ==========================================================================
   ご依頼内容 — ドーナツ＋凡例
   --------------------------------------------------------------------------
   ★凡例を使わず、各区画の周囲に名称を直接配置する。
   ★割合はドーナツの帯中央へ置き、名称の周囲を詰めて円を大きく見せる。
   ★区画のあいだを 1.6 度あけ、細い区画も隙間で判別できるようにする。
   ========================================================================== */

.support-pie {
  margin-top: 0;
}

.support-pie__chart {
  display: block;
  width: 100%;
  max-width: 45rem;
  height: auto;
  margin-inline: auto;
}

@media (max-width: 767px) {
  .support-pie__chart {
    width: calc(100% + 2rem);
    max-width: none;
    margin-inline: -1rem;
  }
}

.support-pie__tone-0 { --pie-color: color-mix(in srgb, var(--white) 100%, var(--navy-500)); --pie-label: var(--navy-900); }
.support-pie__tone-1 { --pie-color: color-mix(in srgb, var(--white) 87%, var(--navy-500)); --pie-label: var(--navy-900); }
.support-pie__tone-2 { --pie-color: color-mix(in srgb, var(--white) 74%, var(--navy-500)); --pie-label: var(--navy-900); }
.support-pie__tone-3 { --pie-color: color-mix(in srgb, var(--white) 61%, var(--navy-500)); --pie-label: var(--navy-900); }
.support-pie__tone-4 { --pie-color: color-mix(in srgb, var(--white) 48%, var(--navy-500)); --pie-label: var(--white); }
.support-pie__tone-5 { --pie-color: color-mix(in srgb, var(--white) 35%, var(--navy-500)); --pie-label: var(--white); }
.support-pie__tone-6 { --pie-color: color-mix(in srgb, var(--white) 22%, var(--navy-500)); --pie-label: var(--white); }

.support-pie__segment {
  fill: var(--pie-color);
}

.support-pie__pct {
  fill: var(--pie-label);
  font-family: var(--font-numeric);
  font-size: 16px;
  font-weight: var(--fw-bold);
}

/*
  支援サービス名。
  ★18 → 20px（三嶋指示）。
    ★demo/b1/index.php のラベル配置計算（$labelFontSize / $labelHalfHeight）は
      この値を前提に円の外へ逃がす距離を出している。ここを変えたら向こうも直すこと。
      片方だけ変えると、ラベルが円に食い込むか、離れすぎる。
*/
.support-pie__callout text {
  fill: var(--white);
  font-family: var(--font-sans);
  font-size: 20px;
  font-weight: var(--fw-bold);
}

/* --------------------------------------------------------------------------
   ★2026-09-09 重複を削除した。
     この下に «地域別 — 日本地図（ドット）»（172 行）と
     «ご依頼内容 — 構成比の帯»（11 行）が **さらに 4 回** 繰り返されていた。
     5 組とも 1 バイト違わず同じ（md5 で確認）。797〜1528 行の 732 行を削除。
     1529 → 797 行。
   ★同じことを繰り返さないために：このファイルは長く、末尾に追記しても
     既存の同名セクションに気づきにくい。**節を足す前に見出しコメントを
     grep すること。**
   -------------------------------------------------------------------------- */
