/* ===== コラム（一覧 / 記事） =====================================
   _shared.css の後に読み込む前提。配色変数は _shared.css の :root を使う。
   G-01/G-27: ここに opacity:0 は書かない（初期表示はJS無効でも読める状態）
   G-28: 注記・メタは --slate 以上（--slate-l は使わない）
================================================================== */

/* 読み物用の狭いラッパー */
.col-wrap{max-width:860px}

/* --- パンくず --- */
.crumbs{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px;
  font-size:13px; color:var(--slate); line-height:1.7; margin-bottom:22px;
}
.crumbs a{color:var(--slate)}
.crumbs a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.crumbs .sep{color:var(--slate);opacity:.55}
.crumbs [aria-current="page"]{color:var(--ink);font-weight:700}

/* --- 記事ヘッダー --- */
.col-hero{padding:40px 0 0}
.col-cat{
  display:inline-block; background:var(--accent); color:#fff;
  font-size:12px; font-weight:700; line-height:1.6; letter-spacing:.02em;
  padding:5px 14px; border-radius:999px;
}
.col-hero h1{
  font-size:clamp(25px,3.4vw,38px); font-weight:900; line-height:1.5;
  letter-spacing:-.01em; margin:18px 0 14px;
}
.col-meta{
  font-family:"Space Grotesk",sans-serif; font-size:13.5px;
  color:var(--slate); letter-spacing:.02em;
}

/* --- 記事本文 --- */
.col-body{padding:36px 0 96px}
.col-prose{
  max-width:min(72ch,100%);
  font-size:16.5px; line-height:1.95; color:var(--ink2);
}
.col-prose > *:first-child{margin-top:0}
.col-prose h2{
  font-size:clamp(20px,2.5vw,27px); font-weight:900; line-height:1.55;
  letter-spacing:-.01em; color:var(--ink);
  margin:56px 0 18px; padding-top:26px; border-top:1px solid var(--line);
}
.col-prose h3{
  font-size:clamp(17px,2vw,20px); font-weight:700; line-height:1.6;
  color:var(--ink); margin:34px 0 12px;
}
.col-prose h4{font-size:16.5px;font-weight:700;color:var(--ink);margin:26px 0 10px}
.col-prose p{margin:0 0 20px}
.col-prose ul,.col-prose ol{margin:0 0 22px;padding-left:1.5em}
.col-prose li{margin-bottom:10px}
.col-prose li::marker{color:var(--accent)}
.col-prose a{
  color:var(--accent); text-decoration:underline;
  text-underline-offset:3px; text-decoration-thickness:1px;
}
.col-prose a:hover{color:var(--accent-d);text-decoration-thickness:2px}
.col-prose strong{font-weight:700;color:var(--ink)}
.col-prose blockquote{
  margin:0 0 24px; padding:18px 22px;
  background:var(--paper); border-left:3px solid var(--accent);
  border-radius:0 12px 12px 0; color:var(--ink2);
}
.col-prose blockquote > *:last-child{margin-bottom:0}
.col-prose hr{border:0;border-top:1px solid var(--line);margin:44px 0}
.col-prose code{
  font-family:"Space Grotesk",ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.92em; background:var(--paper); border:1px solid var(--line);
  border-radius:6px; padding:2px 7px; word-break:break-all;
}
.col-prose img{
  display:block; width:100%; height:auto; margin:0 0 24px;
  border:1px solid var(--line); border-radius:14px;
}
.col-prose .note{font-size:13.5px;color:var(--slate)}

/* --- 記事末CTA / 戻る --- */
.col-cta{
  max-width:min(72ch,100%); margin:56px 0 0; padding:36px 32px;
  background:var(--paper); border:1px solid var(--line);
  border-radius:18px; text-align:center;
}
.col-cta .cc-t{font-size:clamp(19px,2.4vw,23px);font-weight:900;line-height:1.6;margin-bottom:10px}
.col-cta .cc-d{color:var(--slate);font-size:15px;margin-bottom:24px}
.col-back{margin-top:36px;font-size:15px}
.col-back a{color:var(--accent);font-weight:700}
.col-back a:hover{text-decoration:underline;text-underline-offset:3px}

/* --- 一覧 --- */
.s-column{background:var(--white)}
.s-column .crumbs{margin-bottom:18px}
.col-list-title{
  font-size:clamp(20px,2.4vw,26px); font-weight:900;
  letter-spacing:-.01em; color:var(--ink);
}
.col-grid{
  margin-top:36px; display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,384px));
  gap:26px; justify-content:center;
}
.col-card{
  display:flex; flex-direction:column; background:#fff;
  border:1px solid var(--line); border-radius:18px; overflow:hidden;
  box-shadow:0 10px 30px rgba(15,23,42,.06);
  transition:transform .28s cubic-bezier(.22,1,.36,1),box-shadow .28s ease,border-color .28s ease;
}
.col-card:hover{transform:translateY(-4px);box-shadow:0 22px 48px rgba(15,23,42,.14);border-color:var(--accent)}
.col-card-body{padding:26px 24px 24px;display:flex;flex-direction:column;flex:1}
.col-card .cat{
  align-self:flex-start; background:var(--accent); color:#fff;
  font-size:11.5px; font-weight:700; line-height:1.6; letter-spacing:.02em;
  padding:4px 12px; border-radius:999px; margin-bottom:14px;
}
.col-card h3{font-size:18.5px;font-weight:900;line-height:1.55;margin-bottom:10px;color:var(--ink)}
.col-card .date{
  font-family:"Space Grotesk",sans-serif; font-size:12.5px;
  color:var(--slate); margin-bottom:12px;
}
.col-card .exc{color:var(--slate);font-size:14.5px;line-height:1.85;margin-bottom:20px;flex:1}
.col-card .more{
  display:inline-flex; align-items:center; gap:8px;
  color:var(--accent); font-weight:700; font-size:15px; align-self:flex-start;
}
.col-card .more .arw{transition:transform .2s ease}
.col-card:hover .more .arw{transform:translateX(4px)}
.col-empty{
  margin-top:44px; padding:56px 24px; text-align:center;
  border:1px dashed var(--line); border-radius:18px;
  color:var(--slate); font-size:15.5px;
}

/* --- レスポンシブ --- */
@media(max-width:768px){
  .col-hero{padding:28px 0 0}
  .col-hero h1{margin:16px 0 12px}
  .col-body{padding:28px 0 72px}
  .col-prose{font-size:16px;line-height:1.9}
  .col-prose h2{margin:42px 0 14px;padding-top:22px}
  .col-prose h3{margin:28px 0 10px}
  .col-cta{margin-top:44px;padding:28px 20px}
  .col-cta .btn{width:100%;justify-content:center}
}
@media(max-width:640px){
  .col-grid{grid-template-columns:1fr;margin-top:36px}
  .crumbs{font-size:12.5px;gap:6px}
}
@media (prefers-reduced-motion:reduce){
  .col-card{transition:none!important}
  .col-card .more .arw{transition:none!important}
}
