/* ============================================================
   コラム記事詳細 固有CSS（column-detail.html）
   共通分（リセット/ヘッダー/帯/wave/CTA/フッター等）は common.css
   本文はMarkdown由来の汎用HTML（.art-body配下）を装飾する
   ============================================================ */

/* ---------- プレビューバナー ---------- */
.preview-banner{
  background:var(--ink);
  color:var(--cream);
  text-align:center;
  font-size:.88rem;
  font-weight:900;
  letter-spacing:.12em;
  padding:10px 16px;
}

/* ---------- 記事ヘッダー帯（page-heroはcommon.css） ---------- */
.page-hero h1{
  max-width:24em;
  font-size:clamp(1.7rem, 4.4vw, 2.8rem);
  line-height:1.4;
}
.page-lead{
  margin-top:18px;
  max-width:38em;
  color:var(--ink-soft);
}
.art-meta-row{
  margin-top:20px;
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px 18px;
  font-size:.82rem;
  font-weight:700;
  color:var(--ink-soft);
  font-feature-settings:"tnum" 1;
}
.art-meta-row .tag{
  color:var(--tan-deep);
  border:1.5px solid var(--ink);
  border-radius:999px;
  padding:2px 14px;
  background:var(--tan-pale);
}

/* ============================================================
   記事本文
   ============================================================ */
.article{
  background:var(--paper);
  padding:clamp(56px, 8vw, 90px) 0 clamp(70px, 9vw, 110px);
}
.article-wrap{
  max-width:760px;
  margin-inline:auto;
}

/* 記事内目次（JSで自動生成・雑誌の目次の翻案） */
.toc-card{
  background:var(--paper);
  border:2px solid var(--ink);
  border-radius:22px;
  box-shadow:0 4px 0 var(--ink);
  padding:clamp(20px, 3.4vw, 36px);
}
.art-toc{ margin-top:36px; margin-bottom:clamp(48px, 7vw, 72px); }
.toc-head{
  display:flex;
  align-items:baseline;
  gap:14px;
  margin-bottom:8px;
}
.toc-ttl{
  font-weight:900;
  font-size:1.02rem;
  letter-spacing:.18em;
}
.toc-en{
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.22em;
  color:var(--ink-soft);
}
.toc-list{ list-style:none; }
.toc-list li + li{ border-top:2px dotted var(--dash); }
.trow{
  display:flex;
  align-items:baseline;
  gap:12px;
  min-height:48px;
  padding:10px 2px;
  font-size:.95rem;
  text-decoration:none;
  transition:color .3s;
}
.trow .t-no{
  font-size:.78rem;
  font-weight:700;
  color:var(--tan-deep);
  letter-spacing:.08em;
  font-feature-settings:"tnum" 1;
}
.trow .t-ttl{ font-weight:700; line-height:1.6; }
.trow .t-leader{
  flex:1;
  min-width:24px;
  border-bottom:2px dotted var(--dash);
  transform:translateY(-5px);
}
.trow .t-meta{
  font-size:.82rem;
  font-weight:900;
  color:var(--tan-deep);
  white-space:nowrap;
}
.trow:hover{ color:var(--tan-deep); }
.trow:hover .t-ttl{
  text-decoration:underline wavy var(--tangerine) 2px;
  text-underline-offset:6px;
}

/* ---------- 本文（Markdown由来HTML） ---------- */
.art-body{ counter-reset:artsec; }
.art-body h2,
.art-sec h2{
  display:flex;
  align-items:baseline;
  gap:14px;
  font-size:clamp(1.32rem, 2.8vw, 1.72rem);
  line-height:1.5;
  padding-bottom:12px;
  border-bottom:2px dashed var(--dash);
  margin-top:clamp(48px, 7vw, 72px);
  scroll-margin-top:110px;
}
.art-body h2::before{
  counter-increment:artsec;
  content:counter(artsec, decimal-leading-zero);
  flex:none;
  font-size:.8rem;
  font-weight:700;
  color:var(--tan-deep);
  letter-spacing:.08em;
  font-feature-settings:"tnum" 1;
}
.art-sec h2 .sec-no{
  flex:none;
  font-size:.8rem;
  font-weight:700;
  color:var(--tan-deep);
  letter-spacing:.08em;
  font-feature-settings:"tnum" 1;
}
.art-body h3,
.art-sec h3{
  margin-top:30px;
  font-size:1.1rem;
  padding-left:14px;
  border-left:4px solid var(--tangerine);
}
.art-body p,
.art-sec p{
  margin-top:18px;
}
.art-body ul,
.art-sec ul{
  margin-top:16px;
  list-style:none;
  display:grid;
  gap:8px;
}
.art-body ul li,
.art-sec ul li{
  position:relative;
  padding-left:1.4em;
}
.art-body ul li::before,
.art-sec ul li::before{
  content:"";
  position:absolute;
  left:2px;
  top:.72em;
  width:9px;
  height:9px;
  border-radius:50%;
  background:var(--tangerine);
}
/* 番号付きリスト（Markdownのordered list）— マーカーを本文内に収める
   ※目次（.toc-list）はJSが同じol要素で生成するため除外する */
.art-body ol:not(.toc-list),
.art-sec ol:not(.toc-list){
  margin-top:16px;
  padding-left:1.7em;
  list-style:decimal;
  display:grid;
  gap:8px;
}
.art-body ol:not(.toc-list) li,
.art-sec ol:not(.toc-list) li{
  padding-left:.3em;
}
.art-body ol:not(.toc-list) li::marker,
.art-sec ol:not(.toc-list) li::marker{
  color:var(--tangerine);
  font-weight:900;
}
.art-body strong,
.art-sec strong{ font-weight:900; }
.art-sec{
  margin-top:clamp(48px, 7vw, 72px);
  scroll-margin-top:110px;
}

/* 表組み（Markdownのtable） */
.art-body table{
  width:100%;
  margin-top:24px;
  border-collapse:separate;
  border-spacing:0;
  border:2px solid var(--ink);
  border-radius:18px;
  overflow:hidden;
  font-size:.92rem;
  line-height:1.7;
}
.art-body table th{
  background:var(--tan-pale);
  font-weight:900;
  text-align:left;
  padding:12px 18px;
  border-bottom:2px solid var(--ink);
}
.art-body table th + th,
.art-body table td + td{ border-left:1px solid var(--line); }
.art-body table td{
  padding:12px 18px;
  border-bottom:1px solid var(--line);
  background:var(--paper);
}
.art-body table tbody tr:last-child td{ border-bottom:0; }
.art-body table td strong{
  color:var(--tan-deep);
  white-space:nowrap;
  font-feature-settings:"tnum" 1;
}

/* まとめボックス（Markdownのblockquoteを転用） */
.art-body blockquote{
  margin-top:20px;
  background:var(--tan-pale);
  border-radius:18px;
  padding:22px clamp(20px, 3vw, 30px);
}
.art-body blockquote p,
.art-body blockquote ul{ margin-top:0; }

/* ---------- よくある質問 ---------- */
.faq-list{ margin-top:8px; }
.faq-item{
  margin-top:22px;
  border:2px solid var(--ink);
  border-radius:18px;
  overflow:hidden;
}
.faq-q{
  display:flex;
  gap:12px;
  align-items:baseline;
  font-weight:900;
  padding:14px clamp(16px, 2.6vw, 24px);
  background:var(--tan-pale);
  border-bottom:2px dashed var(--dash);
}
.faq-a{
  display:flex;
  gap:12px;
  align-items:baseline;
  padding:14px clamp(16px, 2.6vw, 24px) 18px;
  background:var(--paper);
}
.faq-mark{
  flex:none;
  font-weight:900;
  color:var(--tan-deep);
  font-size:.9rem;
}
.faq-mark--a{ color:var(--sky-deep); }

/* ---------- 著者ブロック ---------- */
.author{
  margin-top:clamp(48px, 7vw, 72px);
  display:flex;
  gap:20px;
  align-items:flex-start;
  background:var(--cream);
  border:2px solid var(--ink);
  border-radius:22px;
  padding:clamp(20px, 3vw, 30px);
}
.author-avatar{
  flex:none;
  width:64px;
  height:64px;
  border-radius:50%;
  background:var(--ink);
  color:var(--cream);
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:900;
  font-size:1.35rem;
  letter-spacing:.04em;
}
.author-body .author-label{
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.14em;
  color:var(--tan-deep);
}
.author-body .author-name{
  margin-top:2px;
  font-size:1.05rem;
  font-weight:900;
}
.author-body .author-job{
  margin-left:8px;
  font-size:.8rem;
  font-weight:700;
  color:var(--ink-soft);
}
.author-body p{
  margin-top:8px;
  font-size:.88rem;
  color:var(--ink-soft);
}

/* ---------- 関連リンク ---------- */
.related{
  margin-top:clamp(48px, 7vw, 72px);
}
.related-head{
  display:flex;
  align-items:baseline;
  gap:14px;
  margin-bottom:18px;
}
.related-head .rel-ttl{
  font-size:1.05rem;
  font-weight:900;
  letter-spacing:.1em;
}
.related-head .rel-en{
  font-size:.75rem;
  font-weight:700;
  letter-spacing:.22em;
  color:var(--ink-soft);
}
.rel-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:18px;
  list-style:none;
}
.rel-card{
  display:flex;
  flex-direction:column;
  height:100%;
  background:var(--paper);
  border:2px solid var(--ink);
  border-radius:18px;
  padding:20px 20px 18px;
  text-decoration:none;
  transition:transform .35s var(--ease-pop), box-shadow .35s var(--ease-pop);
}
.rel-card:hover{
  transform:translateY(-5px);
  box-shadow:0 5px 0 var(--ink);
}
.rel-card h3{
  font-size:1.02rem;
}
.rel-card p{
  margin-top:8px;
  font-size:.85rem;
  color:var(--ink-soft);
}
.rel-card .rel-go{
  margin-top:auto;
  padding-top:14px;
  font-size:.88rem;
  font-weight:700;
  color:var(--tan-deep);
}

/* ============================================================
   responsive
   ============================================================ */
@media (max-width:1024px){
  .rel-grid{ grid-template-columns:1fr; }
}

@media (max-width:768px){
  .author{ flex-direction:column; }
  .art-body table{ font-size:.85rem; }
  .art-body table th,
  .art-body table td{ padding:10px 12px; }
}

@media (max-width:480px){
  .trow{ flex-wrap:wrap; row-gap:2px; }
  .trow .t-ttl{ flex:1 1 calc(100% - 3em); }
  .trow .t-leader{ display:none; }
  .trow .t-meta{ margin-left:calc(2em + 12px); }
}
