/* FluoNote 公開サイトの共通スタイル (docs/SITE_PLAN.md §5.12)。
   site/_layout.html と site/index.html が共有する。
   `_` 始まりのファイルは配信ツリーへ素のままコピーされない(scripts/build-pages.mjs が処理)。

   意匠の方針: 「布に縫い留めたノート」。
   - 地はアプリ本体と同じ生成りの布(bg_main.webp = #f0e2c6 系)。細かい織り目を CSS で敷く
   - 区切り線はすべて**なみ縫いのステッチ**。本文の左端には縦のステッチが1本通り、
     見出しの位置で糸が結び目になる = ページ全体が1本の糸で綴じられている構造
   - 差し色は蛍光糸のミント。**触れるもの(リンク・ボタン・現在地)にだけ**使う
   - 書体はアプリと同じ源暎ラテミン(見出し)と、その姉妹の源暎ラテゴ(本文)
     → site/fonts/(生成は scripts/build-site-fonts.py・ライセンスは同 fonts/OFL.txt) */

/* ── 書体 ─────────────────────────────────────── */

@font-face {
  font-family: 'FluoNote Display';
  src: url('fonts/fluonote-display.woff2') format('woff2');
  font-weight: 400 700;
  font-display: swap;
}

@font-face {
  font-family: 'FluoNote Text';
  src: url('fonts/fluonote-text.woff2') format('woff2');
  font-weight: 400 700;
  font-display: swap;
}

/* ── 色 ───────────────────────────────────────── */

:root {
  --linen: #ece0c6; /* 地 = 生成りの布 */
  --cloth: #f7f0de; /* 布のマス・表の見出し・引用の地 */
  --ink: #2f2519; /* 本文 */
  --ink-soft: #6b5c44; /* 補足・キャプション */
  --seam: #c4ac83; /* ステッチ */
  --seam-faint: #d8c8a8; /* 表の罫など、もっと弱い区切り */
  --thread: #0e6d60; /* 蛍光糸(触れるもの) */
  --thread-lit: #2ea88f; /* 糸が光っている状態 */
  --thread-wash: #cfe6dd; /* 糸の残光。面で使う */
  --gold: #c08a12; /* できのよさ(★) */
  --rose: #b4406c; /* 注意・公開前の注記 */
  --rose-wash: #f3dbe3;
  --weave: rgba(90, 64, 26, 0.05);
  --shade: rgba(74, 54, 22, 0.13);
  --gutter: clamp(18px, 3vw, 30px);
  --measure: 40rem;
}

@media (prefers-color-scheme: dark) {
  :root {
    --linen: #1d1811; /* 夜の工房 */
    --cloth: #282016;
    --ink: #f0e5cf;
    --ink-soft: #a89575;
    --seam: #574530;
    --seam-faint: #3f3323;
    --thread: #4fceae;
    --thread-lit: #7fe4c9;
    --thread-wash: #1d3b35;
    --gold: #dcae42;
    --rose: #e58aab;
    --rose-wash: #3a2029;
    --weave: rgba(255, 240, 210, 0.035);
    --shade: rgba(0, 0, 0, 0.4);
  }
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

html,
body {
  margin: 0;
  padding: 0;
}

body {
  color: var(--ink);
  background-color: var(--linen);
  /* 織り目。縦横の細い筋を 3px 間隔で重ねる(画像を持たずに布の地を作る) */
  background-image: repeating-linear-gradient(90deg, var(--weave) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(0deg, var(--weave) 0 1px, transparent 1px 3px);
  font-family: 'FluoNote Text', 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Yu Gothic UI',
    Meiryo, sans-serif;
  font-size: 17px;
  line-height: 1.85;
  letter-spacing: 0.015em;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* ステッチ(なみ縫い)。区切り線はすべてこれで引く */
.stitch-x,
.site-header::after,
.site-footer::before,
article hr {
  display: block;
  height: 2px;
  border: 0;
  background-image: repeating-linear-gradient(
    90deg,
    var(--seam) 0 9px,
    transparent 9px 15px
  );
}

a {
  color: var(--thread);
  text-decoration-color: var(--thread-wash);
  text-underline-offset: 0.25em;
  text-decoration-thickness: 1px;
}

a:hover {
  text-decoration-color: currentColor;
}

:focus-visible {
  outline: 2px solid var(--thread-lit);
  outline-offset: 3px;
  border-radius: 2px;
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--cloth);
  color: var(--ink);
  padding: 10px 16px;
  z-index: 20;
}

.skip-link:focus {
  left: 12px;
  top: 12px;
}

/* ── ヘッダ ───────────────────────────────────── */

.site-header {
  z-index: 10;
  background-color: var(--linen);
  background-image: repeating-linear-gradient(90deg, var(--weave) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(0deg, var(--weave) 0 1px, transparent 1px 3px);
}

.site-header::after {
  content: '';
}

.site-header .inner {
  max-width: 1120px;
  margin: 0 auto;
  padding: 11px clamp(16px, 4vw, 32px);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 22px;
}

.brand {
  font-family: 'FluoNote Display', serif;
  font-size: 1.24rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-decoration: none;
  color: var(--ink);
  margin-right: auto;
  display: inline-flex;
  align-items: center;
  gap: 9px;
}

.brand svg {
  width: 19px;
  height: 19px;
  flex: 0 0 auto;
  color: var(--thread);
}

/* 狭い画面ではナビを2段目に落とし、横スクロールで収める(ヘッダで画面を潰さない) */
.site-nav {
  order: 3;
  flex: 1 0 100%;
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
  scrollbar-width: none;
  gap: 20px;
  font-size: 0.9rem;
  margin-top: 2px;
}

.site-nav::-webkit-scrollbar {
  display: none;
}

.site-nav a {
  white-space: nowrap;
}

.header-cta {
  order: 2;
}

@media (min-width: 760px) {
  .site-header {
    position: sticky;
    top: 0;
  }

  .site-nav {
    order: 2;
    flex: 0 1 auto;
    flex-wrap: wrap;
    overflow: visible;
    margin-top: 0;
  }

  .header-cta {
    order: 3;
  }
}

.site-nav a {
  color: var(--ink-soft);
  text-decoration: none;
  padding: 2px 0;
  border-bottom: 2px solid transparent;
}

.site-nav a:hover {
  color: var(--ink);
  border-bottom-color: var(--thread);
}

.site-nav a[aria-current='true'] {
  color: var(--ink);
  border-bottom-color: var(--thread);
}

/* ヘッダの「アプリを開く」。本文中の CTA より控えめに置く */
.header-cta {
  font-size: 0.88rem;
  text-decoration: none;
  color: var(--thread);
  border: 1px solid var(--thread);
  border-radius: 999px;
  padding: 3px 15px;
  white-space: nowrap;
}

.header-cta:hover {
  background: var(--thread);
  color: var(--linen);
}

/* ── ページの骨格 ─────────────────────────────── */

.page {
  max-width: 1120px;
  margin: 0 auto;
  padding: clamp(22px, 4vw, 40px) clamp(16px, 4vw, 32px) 56px;
}

.article-grid {
  display: grid;
  grid-template-columns: minmax(0, var(--measure));
  gap: 0;
  align-items: start;
}

/* もくじが入る幅になったら2列。全体を中央に寄せて、本文の左右の余白を対称にする */
@media (min-width: 1060px) {
  .article-grid {
    grid-template-columns: minmax(0, var(--measure)) 200px;
    justify-content: center;
    gap: 64px;
  }
}

.breadcrumb {
  font-size: 0.82rem;
  color: var(--ink-soft);
  margin: 0 0 14px;
  padding-left: var(--gutter);
}

.breadcrumb a {
  color: var(--ink-soft);
  text-decoration-color: var(--seam);
}

/* 本文。左端に縦のステッチが1本通る */
article {
  position: relative;
  padding-left: var(--gutter);
}

article::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px;
  bottom: 0;
  width: 2px;
  background-image: repeating-linear-gradient(180deg, var(--seam) 0 9px, transparent 9px 15px);
}

/* ── 見出しと本文 ─────────────────────────────── */

article h1 {
  font-family: 'FluoNote Display', serif;
  font-size: clamp(1.72rem, 5.2vw, 2.35rem);
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: 0.02em;
  margin: 0 0 10px;
}

article .lede {
  font-size: 1.04rem;
  color: var(--ink-soft);
  margin: 0 0 34px;
}

article h2 {
  position: relative;
  font-family: 'FluoNote Display', serif;
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1.55;
  letter-spacing: 0.02em;
  margin: 52px 0 14px;
  scroll-margin-top: 76px;
}

/* 糸の結び目。縦ステッチの上に見出しの位置で玉が来る */
article h2::before {
  content: '';
  position: absolute;
  left: calc(-3px - var(--gutter));
  top: 0.72em;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--thread);
}

article h3 {
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin: 32px 0 8px;
  color: var(--ink);
  scroll-margin-top: 76px;
}

article h3::before {
  content: '';
  display: inline-block;
  width: 14px;
  height: 2px;
  vertical-align: 0.28em;
  margin-right: 9px;
  background: var(--seam);
}

article p {
  margin: 0 0 18px;
}

article ul,
article ol {
  margin: 0 0 18px;
  padding-left: 1.5em;
}

article li {
  margin-bottom: 7px;
}

article ul {
  list-style: none;
  padding-left: 1.2em;
}

article ul > li {
  position: relative;
}

/* 箇条書きの点も一針にする */
article ul > li::before {
  content: '';
  position: absolute;
  left: -1.05em;
  top: 0.85em;
  width: 7px;
  height: 2px;
  background: var(--seam);
}

article ol > li::marker {
  color: var(--ink-soft);
  font-size: 0.9em;
}

article strong {
  font-weight: 700;
}

article hr {
  margin: 40px 0;
}

article blockquote {
  margin: 0 0 18px;
  padding: 2px 0 2px 18px;
  border-left: 2px solid var(--seam-faint);
  color: var(--ink-soft);
}

/* ── 図版 ─────────────────────────────────────── */

article figure {
  margin: 0 0 24px;
}

article img,
article figure img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 0 auto;
}

/* 端末のスクリーンショットは実寸に近い大きさで置く。
   780×1400 は 390×700 の2倍で撮ったもので、本文の桁(640px)いっぱいに伸ばすと
   実機の1.6倍の絵になり、1枚で画面が埋まる。**縦を上限で抑え、横は成り行き**にすると、
   縦長の全画面は実寸(約350px幅)へ、切り出した横長の図はそのまま横いっぱいに収まる。 */
article img[src*='/shots/'] {
  max-height: 620px;
  width: auto;
}

/* スクリーンショットは布に留めた見本のように枠を付ける。SVG の図解は地に溶かす */
article figure img:not([src$='.svg']) {
  border: 1px solid var(--seam);
  border-radius: 3px;
  background: var(--cloth);
  padding: 6px;
  box-shadow: 0 2px 0 var(--shade);
}

/* ── コード・表 ───────────────────────────────── */

article code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.88em;
  background: var(--cloth);
  border: 1px solid var(--seam-faint);
  border-radius: 3px;
  padding: 1px 5px;
}

article pre {
  margin: 0 0 20px;
  padding: 15px 18px;
  background: var(--cloth);
  border: 1px solid var(--seam-faint);
  border-left: 2px solid var(--seam);
  border-radius: 3px;
  overflow-x: auto;
  line-height: 1.8;
}

article pre code {
  background: none;
  border: 0;
  padding: 0;
  font-size: 0.86rem;
  white-space: pre;
}

.table-scroll {
  overflow-x: auto;
  margin: 0 0 22px;
  /* 幅が足りず容器内スクロールになった表には、隠れている側の端に影を出す
     (背景の attachment を local/scroll で分ける定番の手法。はみ出していなければ影は出ない) */
  background:
    linear-gradient(to right, var(--linen) 30%, rgba(255, 255, 255, 0)) 0 0,
    linear-gradient(to right, rgba(255, 255, 255, 0), var(--linen) 70%) 100% 0,
    radial-gradient(farthest-side at 0 50%, rgba(60, 40, 10, 0.22), rgba(60, 40, 10, 0)) 0 0,
    radial-gradient(farthest-side at 100% 50%, rgba(60, 40, 10, 0.22), rgba(60, 40, 10, 0)) 100% 0;
  background-repeat: no-repeat;
  background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
  background-attachment: local, local, scroll, scroll;
}

article table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
  line-height: 1.75;
}

.table-scroll table {
  margin: 0;
  /* 最小幅は固定しない(2026-09-07 ユーザー指摘: 375px の端末で全ての表が横スクロールになっていた)。
     文章の表は折り返して収め、列の多い数表だけが .table-scroll の overflow で容器内スクロールになる */
}

article th,
article td {
  border-bottom: 1px solid var(--seam-faint);
  padding: 9px 12px;
  text-align: left;
  vertical-align: top;
}

article thead th {
  background: var(--cloth);
  border-bottom: 2px solid var(--seam);
  font-weight: 700;
}

article tbody tr:last-child td {
  border-bottom: 0;
}

/* 短いセル(build-pages.mjs が付ける)は折り返さない。狭い画面では余白と文字を少し詰める */
article .nb {
  white-space: nowrap;
}

@media (max-width: 480px) {
  article th,
  article td {
    padding: 7px 8px;
    font-size: 0.88rem;
  }
}

/* ── もくじ ───────────────────────────────────── */

.toc {
  display: none;
}

@media (min-width: 1060px) {
  .toc {
    display: block;
    position: sticky;
    top: 84px;
    font-size: 0.85rem;
    line-height: 1.7;
  }
}

.toc-label {
  font-family: 'FluoNote Display', serif;
  font-size: 0.85rem;
  letter-spacing: 0.14em;
  color: var(--ink-soft);
  margin: 0 0 10px;
  padding-bottom: 8px;
  background-image: repeating-linear-gradient(90deg, var(--seam) 0 9px, transparent 9px 15px);
  background-repeat: no-repeat;
  background-position: bottom left;
  background-size: 100% 2px;
}

.toc ol {
  list-style: none;
  margin: 0;
  padding: 0;
}

.toc li {
  margin: 0 0 7px;
}

.toc a {
  display: block;
  color: var(--ink-soft);
  text-decoration: none;
  padding-left: 13px;
  border-left: 2px solid transparent;
}

.toc a:hover {
  color: var(--ink);
}

.toc a[aria-current='true'] {
  color: var(--ink);
  border-left-color: var(--thread);
}

/* 狭い画面のもくじは、布に付いたポケットのように畳んでおく */
.toc-pocket {
  margin: 0 0 30px;
  border: 1px solid var(--seam-faint);
  border-radius: 3px;
  background: var(--cloth);
}

@media (min-width: 1060px) {
  .toc-pocket {
    display: none;
  }
}

.toc-pocket > summary {
  cursor: pointer;
  padding: 9px 14px;
  font-size: 0.9rem;
  color: var(--ink-soft);
  list-style: none;
}

.toc-pocket > summary::-webkit-details-marker {
  display: none;
}

.toc-pocket > summary::after {
  content: '＋';
  float: right;
  color: var(--seam);
}

.toc-pocket[open] > summary::after {
  content: '−';
}

.toc-pocket ol {
  margin: 0;
  padding: 0 16px 12px 30px;
  font-size: 0.9rem;
}

.toc-pocket li {
  margin-bottom: 5px;
}

/* ── 注記ブロック ─────────────────────────────── */

/* プレビュー版だけに出る追記 (SITE_PLAN §6 案1) */
.preview-only {
  background: var(--cloth);
  border: 1px solid var(--seam);
  border-radius: 3px;
  padding: 4px 20px;
  margin: 0 0 24px;
}

.preview-only > :first-child {
  margin-top: 16px;
}

/* 公開までに解消する注記 (SITE_PLAN §4.5)。本番ビルドはこれがあると止まる */
.todo-note {
  background: var(--rose-wash);
  border: 1px dashed var(--rose);
  border-radius: 3px;
  padding: 4px 20px 8px;
  margin: 0 0 24px;
}

.todo-note .todo-label {
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rose);
  margin: 14px 0 8px;
}

.todo-note > :last-child {
  margin-bottom: 12px;
}

/* ── フッタ ───────────────────────────────────── */

.site-footer {
  margin-top: 40px;
}

.site-footer::before {
  content: '';
}

.site-footer .inner {
  max-width: 1120px;
  margin: 0 auto;
  padding: 26px clamp(16px, 4vw, 32px) 40px;
  font-size: 0.83rem;
  color: var(--ink-soft);
}

.footer-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 20px;
  margin-bottom: 14px;
}

.footer-nav a {
  color: var(--ink-soft);
  text-decoration-color: var(--seam);
}

.site-footer .copyright {
  margin: 0;
  letter-spacing: 0.04em;
}

/* ══ トップページ (site/index.html) ══════════════ */

.hero {
  max-width: 1120px;
  margin: 0 auto;
  padding: clamp(26px, 5vw, 56px) clamp(16px, 4vw, 32px) clamp(30px, 5vw, 54px);
  display: grid;
  gap: clamp(28px, 5vw, 48px);
  align-items: center;
}

@media (min-width: 900px) {
  .hero {
    grid-template-columns: minmax(0, 1fr) minmax(300px, 400px);
  }
}

.hero h1 {
  font-family: 'FluoNote Display', serif;
  font-size: clamp(2rem, 6.4vw, 3.05rem);
  font-weight: 700;
  line-height: 1.42;
  letter-spacing: 0.035em;
  margin: 0 0 20px;
}

.hero h1 em {
  font-style: normal;
  /* 見出しの一語にだけ糸を通す */
  box-shadow: inset 0 -0.16em 0 var(--thread-wash);
}

.hero-lede {
  font-size: 1.02rem;
  color: var(--ink-soft);
  margin: 0 0 28px;
  max-width: 30rem;
}

.cta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
}

.cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--thread);
  color: var(--linen);
  text-decoration: none;
  font-family: 'FluoNote Display', serif;
  font-weight: 700;
  font-size: 1.06rem;
  letter-spacing: 0.06em;
  padding: 13px 30px;
  border-radius: 4px;
  /* ボタンの縁に一針。布に留めたラベルに見せる */
  box-shadow: inset 0 0 0 1px var(--thread), inset 0 0 0 4px var(--linen),
    inset 0 0 0 5px var(--thread), 0 3px 0 var(--shade);
  transition: transform 0.1s ease, box-shadow 0.1s ease;
}

.cta:hover {
  transform: translateY(-1px);
  box-shadow: inset 0 0 0 1px var(--thread), inset 0 0 0 4px var(--linen),
    inset 0 0 0 5px var(--thread), 0 4px 0 var(--shade);
}

.cta:active {
  transform: translateY(2px);
  box-shadow: inset 0 0 0 1px var(--thread), inset 0 0 0 4px var(--linen),
    inset 0 0 0 5px var(--thread), 0 1px 0 var(--shade);
}

.badge {
  display: inline-block;
  font-size: 0.76rem;
  letter-spacing: 0.1em;
  color: var(--rose);
  border: 1px dashed var(--rose);
  border-radius: 999px;
  padding: 2px 13px;
  margin-bottom: 18px;
}

/* 主役の図。布のマスに糸が通っていく (SITE_PLAN §5.12) */
/* 台の上に置いた布の見本のように、わずかに傾ける */
.hero-fig {
  width: 100%;
  height: auto;
  transform: rotate(-1.4deg);
  filter: drop-shadow(0 5px 0 var(--shade));
}

.hero-fig .cell {
  fill: var(--cloth);
  stroke: var(--seam);
  stroke-width: 1.5;
}

.hero-fig .cell-stitched {
  fill: var(--thread-wash);
}

.hero-fig .num {
  font-family: 'FluoNote Display', serif;
  font-size: 21px;
  font-weight: 700;
  text-anchor: middle;
  fill: var(--ink);
}

.hero-fig .num-after {
  fill: var(--thread);
}

.hero-fig .frame {
  fill: none;
  stroke: var(--seam);
  stroke-width: 2;
  stroke-dasharray: 9 6;
}

.hero-fig .thread {
  fill: none;
  stroke: var(--thread-lit);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 293;
  stroke-dashoffset: 293;
  animation: draw-thread 9s linear infinite;
}

.hero-fig .needle {
  fill: var(--ink);
  offset-path: var(--path);
}

/* 3針を順に縫う → 糸が通ったマスの残り数値が入れ替わる */
@keyframes draw-thread {
  0% {
    stroke-dashoffset: 293;
  }
  22% {
    stroke-dashoffset: 0;
  }
  86% {
    stroke-dashoffset: 0;
  }
  100% {
    stroke-dashoffset: 293;
  }
}

.hero-fig .after {
  opacity: 0;
  animation: swap-in 9s linear infinite;
}

.hero-fig .before {
  opacity: 1;
  animation: swap-out 9s linear infinite;
}

.hero-fig .lit {
  opacity: 0;
  animation: swap-in 9s linear infinite;
}

@keyframes swap-in {
  0%,
  20% {
    opacity: 0;
  }
  30%,
  86% {
    opacity: 1;
  }
  96%,
  100% {
    opacity: 0;
  }
}

@keyframes swap-out {
  0%,
  20% {
    opacity: 1;
  }
  30%,
  86% {
    opacity: 0;
  }
  96%,
  100% {
    opacity: 1;
  }
}

/* 動きを減らす設定では、縫い終わった状態で止める */
@media (prefers-reduced-motion: reduce) {
  .hero-fig .thread {
    animation: none;
    stroke-dashoffset: 0;
  }

  .hero-fig .after,
  .hero-fig .lit {
    animation: none;
    opacity: 1;
  }

  .hero-fig .before {
    animation: none;
    opacity: 0;
  }
}

.strip {
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 clamp(16px, 4vw, 32px);
}

/* こんなときに。3項目を1本の縦の並びで置く
   ("特徴3カラム"は既定値そのものなので採らない。§2.1) */
.strip-head {
  font-family: 'FluoNote Display', serif;
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  margin: 0 0 26px;
  padding-top: 34px;
  background-image: repeating-linear-gradient(90deg, var(--seam) 0 9px, transparent 9px 15px);
  background-repeat: no-repeat;
  background-position: top left;
  background-size: 100% 2px;
}

.can-do {
  list-style: none;
  margin: 0 0 48px;
  padding: 0;
  max-width: 46rem;
}

.can-do li {
  position: relative;
  padding-left: 30px;
  margin-bottom: 30px;
}

.can-do li:last-child {
  margin-bottom: 0;
}

/* 一針。項目の頭に糸の目印を置く */
.can-do li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.82em;
  width: 16px;
  height: 2px;
  background: var(--thread);
}

.can-do b {
  display: block;
  font-family: 'FluoNote Display', serif;
  font-size: 1.16rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  margin-bottom: 4px;
}

.can-do span {
  color: var(--ink-soft);
  font-size: 0.96rem;
}

/* 免責 = 布の耳(セルヴィッジ)。地の色を落として最後に置く */
.selvedge {
  max-width: 1120px;
  margin: 0 auto;
  padding: 26px clamp(16px, 4vw, 32px) 8px;
  font-size: 0.83rem;
  line-height: 1.85;
  color: var(--ink-soft);
  background-image: repeating-linear-gradient(90deg, var(--seam) 0 9px, transparent 9px 15px);
  background-repeat: no-repeat;
  background-position: top clamp(16px, 4vw, 32px);
  background-size: calc(100% - 2 * clamp(16px, 4vw, 32px)) 2px;
}

.selvedge p {
  margin: 0 0 8px;
  max-width: 48rem;
}
