/* ==========================================================================
   Springl トップページ試作（第6版）
   色・形・書体・余白は assets/tokens.css だけを参照する（生の値を書かない）

   ── 守っていること ────────────────────────────────────
   1  地は灰色、面は白。囲み線と影に頼らず、地と面の差で構造を出す
   2  青はナビ・事例の帯・押せるものだけ。地には置かない
   3  デュオトーンは事例とテーマ別とインタビューだけ。
      ニュースの写真は「何が起きたか」を伝える情報なので素のまま
   4  **画面にデザインの説明を書かない。** 節の下に「〜の順に並べています」
      のような注釈を置かない。実在の媒体はやらないし、
      生成AIが作ったページの匂いがいちばん出るところ（2026-09-20 編集長のご指摘）
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--sp-font);
  font-size: var(--sp-fs-body);
  line-height: 1.85;
  color: var(--sp-text);
  background: var(--sp-bg);
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
/* **`hidden` を必ず効かせる。** UA 由来の display:none は、クラス側で
   display を指定した瞬間に負ける（実測: 0件でも「あとで読む 0」が出ていた） */
[hidden] { display: none !important; }
img { max-width: 100%; display: block; }
/* **題名は右端まで文字を詰める。** 行の長さを揃える指定（text-wrap: balance）も、
   文節で切る指定（word-break: auto-phrase）も使わない（2026-09-23 編集長のご指摘）。
   どちらも行を右端より手前で折るので、題名の右に空きができ「改行位置がおかしい」と見えた。
   一度 auto-phrase を足して**かえって悪化させた**（balance と重なり、さらに短く折れた）。
   **text-wrap: pretty も使わない。** 最後の行の1文字を避けるが、2行の題名では1行目を詰める
   （404 の題名で実測）。最後の行に1文字だけ残ることはある。
   theme/check-theme.js が「普通に折り返したとき」と比べて、早く折れた題名を数える */
/* **2色で描く。** 外に地の色の輪を重ねるので、白い面でも紺のフッターでも
   どちらかが必ず見える（単色の青い輪はフッターの上で消えていた）。
   WCAG 2.4.13 Focus Appearance の考え方 */
:focus-visible {
  outline: 2px solid var(--sp-focus);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px var(--sp-focus-halo);
  border-radius: 3px;
}
/* 紺のフッター・青い帯の中は、地が暗いので輪の内外を入れ替える */
.foot :focus-visible, .sec--case :focus-visible {
  outline-color: #ffd166;
  box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.55);
}

.wrap {
  max-width: var(--sp-max);
  margin: 0 auto;
  padding-inline: var(--sp-gutter);
}

html { scroll-behavior: smooth; }
/* 固定ヘッダーの高さ＋少しの余白。**帯の高さを変えたらここも測り直す**
   （実測 2026-09-20: 広い幅 131px ／ 600px以下 123px） */
[id] { scroll-margin-top: 160px; }   /* 帯を 80px にした（0.5.39）ぶん 16px 足した */
@media (max-width: 600px) { [id] { scroll-margin-top: 136px; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* --- ③ 画像は青のデュオトーンで統一（掛けるのは .ph--tint だけ）-------------
   実際の写真は撮り手も被写体もばらばらになる。青で染めると媒体として揃い、
   ホバーで元の色に戻すと「気が利いている」と感じる仕掛けになる。

   **ニュース（リードと新着）には掛けない。** あそこの写真は
   「何が起きたか」を伝える情報で、飾りではない。
   掛けるのは事例・テーマ別・インタビューの一覧（写真が質感として働く場所）。
   試作の画像は灰色の模様で、実写真の代わり（染まり方が分かるようにしてある） */
.ph {
  position: relative;
  overflow: hidden;
  /* 実写真の代わり。**地を白にしたので、模様も明るくする。**
     灰色の地のときは暗い模様でちょうど良かったが、白の上だと
     暗い塊が並んで見え、画面全体が重くなる（実測で見て直した）。
     明暗の幅は残す——事例の帯では紺で染めるので、
     中間の明るさだけだと平坦な一色になって奥行きが出ない */
  background:
    radial-gradient(60% 80% at 22% 20%, #ffffff 0%, transparent 60%),
    radial-gradient(50% 70% at 78% 72%, #d9d9d9 0%, transparent 62%),
    radial-gradient(70% 90% at 96% 8%, #ededed 0%, transparent 60%),
    linear-gradient(150deg, #e6e6e6 0%, #c4c4c4 52%, #9c9c9c 100%);
}
/* **本物の写真が入ったら、枠いっぱいに切り抜く**（2026-09-23 本番で壊れて発見）。
   試作は色の面だけで作っていて、<img> が入った形を一度も測っていなかった。
   WordPress の <img> は width/height 属性（例 1024×683）を持つので、
   指定が無いと元の大きさのまま広がり、枠の比率（16:9 など）も効かない */
.ph > img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
/* 事例の帯だけは、染める前の明暗の幅を広く取る（紺で染めるため） */
.sec--case .ph {
  background:
    radial-gradient(55% 75% at 24% 24%, #e8ebf1 0%, transparent 58%),
    radial-gradient(45% 65% at 76% 70%, #7d859a 0%, transparent 60%),
    radial-gradient(95% 130% at 52% 118%, #191e2b 0%, transparent 72%),
    linear-gradient(152deg, #b6bdcb 0%, #454c60 55%, #222836 100%);
}
/* 一覧のサムネイルも角を丸める（写真が四角いままだと、
   丸めたカードの中で角だけが尖って見える）。
   **`.card__thumb` はここに入れない**——カード自身が角を切るため */
.latest__thumb, .ccard__thumb, .icard__thumb { border-radius: var(--sp-radius); }
.ph--tint::after {                       /* 染める層 */
  content: "";
  position: absolute;
  inset: 0;
  background: var(--sp-blue);
  mix-blend-mode: color;
  opacity: 0.8;
  transition: opacity 0.45s var(--sp-ease);
}
.ph__label {                             /* 試作の目印。実装時に消す */
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
  z-index: 1;
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-eyebrow);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: rgba(255, 255, 255, 0.45);
}
a:hover .ph--tint::after,
article:hover .ph--tint::after { opacity: 0; }
@media (prefers-reduced-motion: reduce) { .ph--tint::after { transition: none; } }

/* --- 目印「循環する輪」＋ 唯一の動き ---------------------------------------
   Springl ＝ **Sustainability と Profit が Ring のように循環する**
   （2026-09-20 編集長のご説明）。輪を2つの弧で作り、
   「2つのものが巡っている」ことを形で示す。
   **右肩上がりの線は誤り**だった（循環していないので意味が逆）。

   動きはこの輪が1回まわるだけ。あちこち動かすと安っぽくなる */
/* **2つの弧を違う色にする。** 名前の意味（Sustainability と Profit が
   Ring のように循環する）が、色でも読めるようになる。
   `--sp-ring-2` は `<use>` の影の木にも継承される（属性で塗ると継承されない） */
.ring {
  --sp-ring-2: #9a9a9a;   /* 2本目の弧＝灰（2026-09-23 黒と灰色に。まわる動きは残す） */
  width: 17px;
  height: 17px;
  flex: none;
  color: var(--sp-ink);
  animation: sp-turn 1.1s var(--sp-ease) 1;
}
@keyframes sp-turn { from { transform: rotate(-150deg); } to { transform: rotate(0); } }
@media (prefers-reduced-motion: reduce) { .ring { animation: none; } }

.ring--light { color: #fff; --sp-ring-2: rgba(255, 255, 255, 0.55); }
.ring--accent { color: var(--sp-red); }
.ring--lg { width: 30px; height: 30px; }

/* 定義を1つ置いて使い回す（同じ図形を8か所に書かない） */
.ring-def { position: absolute; width: 0; height: 0; overflow: hidden; }

/* --- ラベル（極小）-------------------------------------------------------- */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-s2);
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-eyebrow);
  font-weight: 400;                      /* 太らせない。小さい大文字は 400 が締まる */
  letter-spacing: var(--sp-ls-label);
  text-transform: uppercase;
  color: var(--sp-link);
  line-height: 1;
}
.eyebrow--light { color: #fff; }
.eyebrow--accent { color: var(--sp-red); }

/* --- 節の見出し ----------------------------------------------------------- */
/* 節と節の間は 72px（どの幅でも）。128px は、業界の札のように中身の短い節の上下で間延びした
   （2026-10-04 編集長のご指摘「ここの余白は少し開けすぎ」）。刻みは増やさず、既にある 72px に揃える */
.sec { margin-block: var(--sp-s8); }
@media (max-width: 600px) { .sec { margin-block: var(--sp-s9); } }
.sec__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--sp-s3) var(--sp-s6);
  flex-wrap: wrap;
  padding-bottom: var(--sp-s3);
  /* 2px の太い罫線は「見出しの箱」に見える。**1px の区切り**にする */
  border-bottom: 1px solid var(--sp-line-strong);
  margin-bottom: var(--sp-s7);
}
.sec__titles { min-width: 0; }
/* **節の見出しは、英語を大きく・日本語を小さく**
   （2026-09-22 編集長のご指示）。40px と 14px で**約2.9倍の落差**を作る。

   大きくするのは**節の見出しの英語だけ**。`.eyebrow` は事例カードや
   データのカードでも使っているので、そちらは小さいまま
   （`.sec__titles` の中だけに効かせる） */
.sec__titles .eyebrow {
  display: block;
  font-family: var(--sp-font-display);
  font-size: var(--sp-fs-sec-en);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.02;
  color: var(--sp-ink);
  /* 大きい字では字間を詰める（11px のラベルの字間はここでは広すぎる） */
  text-transform: uppercase;
}
.sec__ja {
  font-size: var(--sp-fs-sec);
  font-weight: 700;
  color: var(--sp-text-soft);
  line-height: 1.5;
  letter-spacing: 0.01em;
  margin: var(--sp-s2) 0 0;
  text-wrap: balance;
}
/* 節の右上の「すべての◯◯ →」。**太字にする**（2026-09-22 編集長のご指示）。
   節の英語が 40px になったので、細い 11px では釣り合わない */
.sec__more {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  font-weight: 700;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-link);
  white-space: nowrap;
  padding-bottom: 3px;
  border-bottom: 1px solid transparent;
}
.sec__more:hover { border-bottom-color: currentColor; }

/* --- グローバルナビ（青）-------------------------------------------------- */
.head { position: sticky; top: 0; z-index: 50; }
/* **帯は白。色を持つのはロゴと「会員登録」だけ**
   （2026-09-21 編集長のご指示）。青い帯は画面でいちばん重い要素だった。
   面積の大きいものから色を抜くと、残った小さい色が効くようになる */
.head__bar {
  background: var(--sp-card);
  color: var(--sp-ink);
  border-bottom: 1px solid var(--sp-line);
}
/* **3つの組（ロゴ／ナビ／道具）の間をしっかり空ける**
   （2026-09-22 編集長のご指摘「パーツごとの余白をもっととる」）。
   16px では、ロゴとナビの1つ目が同じ組に見えていた */
.head__main { display: flex; align-items: center; gap: var(--sp-s6); min-height: 64px; }
.logo {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--sp-font-logo);
  font-size: calc(26px * var(--sp-scale));   /* 2026-09-23「もう少し大きく」21→26 */
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--sp-ink);   /* 文字の色で持つ（面の色だと暗いモードで沈む・2026-09-23 実測） */
  flex: none;
}
/* ロゴの横のタグライン（2026-10-11 編集長のご依頼）。**帯では英語の2行を小さく**（2026-10-12 同。文は inc/config.php の tagline_head）。
   日本語の1行（約210px）では、編集部で入ると帯に収まらず消えていた。英語の2行は約110px で、ロゴの高さに収まる。
   どの幅もロゴの右に細い線を挟んで2行（スマホは 2026-10-12 から。前は「Springl」の下に1行）。
   それでも帯に収まらないときは theme.js が測って外す（下の data-sp-fit="2"）。
   **試作の帯には置いていない。** 試作の帯は「ログイン」「あとで読む」が文字のリンクで本番より長い */
.logo__name { line-height: 1; }
.logo__tag {
  display: none;
  font-family: var(--sp-font-logo); font-weight: 600;
  font-size: calc(10px * var(--sp-scale)); line-height: 1.3; letter-spacing: 0.02em;
  color: var(--sp-text-soft); white-space: nowrap;
}
/* PC・タブレット（701px〜）は帯を高く・ロゴを大きく（2026-10-12 編集長のご依頼「もう少しヘッダーを高くして、ロゴを大きく」）。
   64px → 80px・ロゴ 26px → 32px・輪 30px → 36px・タグライン 10px → 11px。スマホの帯（〜700px）はそのまま */
@media (min-width: 701px) {
  .head__main { min-height: 80px; }
  .head .logo { font-size: calc(32px * var(--sp-scale)); gap: 11px; }
  .head .ring--lg { width: 36px; height: 36px; }
  .head .logo__tag { font-size: calc(11px * var(--sp-scale)); }
}
@media (min-width: 701px) {
  .head .logo__tag { display: block; margin-left: var(--sp-s1); padding-left: var(--sp-s3); border-left: 1px solid var(--sp-line-strong); }
  .head .logo__tag > span { display: block; }
}
/* スマホの帯は上下に余白（2026-10-12 編集長のご指摘「もう少し余白を」）。ロゴとタグラインの2段が帯の縁に近かった。
   メニューの位置は theme.js が帯の高さ（--sp-bar-h）を測って合わせるので、ここで高さを変えてよい */
@media (max-width: 700px) {
  .head__main { padding-block: 12px; }
}
.logo__br { display: none; }
/* スマホもロゴの右に（2026-10-12 編集長のご依頼「PC と同じように、ロゴの横に2行とか3行で」。前は「Springl」の下に1行で、読みにくかった）。
   幅を取らないよう3行（Sustainable／Business Design／Magazine。header.php の br）。2行（約108px）では 360px で会員登録と並ばなかった。
   それでも帯に収まらないとき（320px など）は theme.js が測って外す（data-sp-fit="2"） */
@media (max-width: 700px) {
  .head .logo__tag { display: block; margin-left: 2px; padding-left: var(--sp-s2); border-left: 1px solid var(--sp-line-strong);
    font-size: calc(9.5px * var(--sp-scale)); line-height: 1.25; letter-spacing: 0; }
  .head .logo__br { display: inline; }
}
/* ナビの項目どうしも空ける。**押せる範囲（padding）と、項目の間（gap）を
   両方広げる**——padding だけ広げると隣と接して1つの帯に見える */
.nav { display: flex; gap: var(--sp-s3); margin-left: auto; }
.nav a {
  font-size: calc(13px * var(--sp-scale));
  font-weight: 700;
  padding: 9px 14px;
  border-radius: var(--sp-radius-pill);
  color: var(--sp-ink);
  white-space: nowrap;
}
.nav a:hover { background: var(--sp-blue-wash); color: var(--sp-link); }
.head__tools { display: flex; align-items: center; gap: var(--sp-s3); flex: none; }
/* 編集部向けツールの入り口（Editor Tools）。**WordPress のテーマでだけ出る**（編集者以上・inc/editor-tools.php）。
   試作には出てこない。広い幅は帯に、狭い幅はメニューの中に出す（cehub.jp と同じ形） */
.etools { position: relative; }
.etools__btn {
  list-style: none; cursor: pointer; display: inline-flex; align-items: center; min-height: 34px;
  padding: 0 var(--sp-s4); border: 1px solid var(--sp-line-strong); border-radius: var(--sp-radius-pill);
  font-family: var(--sp-font-mono); font-size: calc(12px * var(--sp-scale)); letter-spacing: var(--sp-ls-label);
  color: var(--sp-ink); background: var(--sp-card); white-space: nowrap;
}
.etools__btn::-webkit-details-marker { display: none; }
.etools[open] .etools__btn, .etools__btn:hover { border-color: var(--sp-link); color: var(--sp-link); }
.etools__menu {
  position: absolute; right: 0; top: calc(100% + var(--sp-s2)); z-index: 60;
  width: min(300px, calc(100vw - 32px)); padding: var(--sp-s3);
  background: var(--sp-card); border: 1px solid var(--sp-line-strong); border-radius: var(--sp-radius);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.etools__head { margin: 0 0 var(--sp-s2); font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label); color: var(--sp-text-soft); display: flex; justify-content: space-between; }
.etools__item { display: block; padding: var(--sp-s3); border-radius: var(--sp-radius); color: var(--sp-ink); }
.etools__item:hover { background: var(--sp-bg); }
.etools__label { display: block; font-weight: 700; }
.etools__desc { display: block; font-size: calc(12px * var(--sp-scale)); color: var(--sp-text-soft); }
.etools__who { margin: var(--sp-s2) 0 0; padding: var(--sp-s3) var(--sp-s3) 0; border-top: 1px solid var(--sp-line);
  font-size: calc(12px * var(--sp-scale)); line-height: 1.7; color: var(--sp-text-soft); }
.etools__who a { display: inline-block; min-height: 24px; padding-block: 2px; margin-left: var(--sp-s2); color: var(--sp-link); }
.menu__label { margin: var(--sp-s4) 0 0; font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label); color: var(--sp-text-soft); }
/* マイページ（2026-10-12 編集長のご提案。あとで読むのしおり・ダッシュボード・会員情報を1つにまとめた）。**WordPress のテーマでだけ出る**（会員）。
   押すと開く。中身はカスタムニュース・あとで読む（件数）・会員情報・ログアウト。狭い幅（700px 以下）はメニューの中にある */
.mypage { position: relative; }
.mypage__btn { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; min-height: 34px; }
.mypage__btn::-webkit-details-marker { display: none; }
.mypage__btn::after { content: ""; width: 6px; height: 6px; margin: -3px 2px 0 2px; border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor; transform: rotate(45deg); }
.mypage[open] .mypage__btn::after { margin-top: 3px; transform: rotate(-135deg); }
.mypage[open] .mypage__btn { color: var(--sp-link); }
.mypage__btn:hover { text-decoration: none; color: var(--sp-link); }
.mypage__btn .mypage__count { position: static; display: inline-block; }
.mypage__btn .mypage__count[hidden] { display: none; }
.mypage__menu {
  position: absolute; right: 0; top: calc(100% + var(--sp-s2)); z-index: 60;
  width: min(240px, calc(100vw - 32px)); padding: var(--sp-s2);
  background: var(--sp-card); border: 1px solid var(--sp-line-strong); border-radius: var(--sp-radius);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.mypage__item { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-s3); min-height: 40px;
  padding: var(--sp-s2) var(--sp-s3); border-radius: var(--sp-radius); font-size: calc(13.5px * var(--sp-scale)); font-weight: 700; color: var(--sp-ink); }
.mypage__item:hover { background: var(--sp-bg); color: var(--sp-link); }
.mypage__item--out { margin-top: var(--sp-s2); border-top: 1px solid var(--sp-line); border-radius: 0 0 var(--sp-radius) var(--sp-radius);
  font-weight: 400; color: var(--sp-text-soft); }
@media (min-width: 861px) { .menu__etools { display: none; } }
@media (max-width: 860px) { .etools { display: none; } }
.icon-btn {
  display: grid;
  place-items: center;
  width: 34px; height: 34px;
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
  background: none;
  color: var(--sp-text);
  cursor: pointer;
  font-size: 15px;
  font-family: inherit;
}
.icon-btn:hover { background: var(--sp-blue-wash); border-color: var(--sp-link); color: var(--sp-link); }
/* 切替（Aa / 🌙）。押されている状態を**見た目でも**示す
   （aria-pressed だけだと、読み上げを使わない人に伝わらない） */
.sp-toggle {
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
  background: none;
  color: var(--sp-text);
  font-family: var(--sp-font-display);
  font-size: calc(12px * var(--sp-scale));
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
}
.sp-toggle:hover { border-color: var(--sp-link); color: var(--sp-link); }
.sp-toggle[aria-pressed="true"] {
  background: var(--sp-blue-wash);
  border-color: var(--sp-link);
  color: var(--sp-link);
}
/* ヘッダーの文字リンク（ニュースレター・ログイン） */
.head__link {
  font-size: calc(13px * var(--sp-scale));
  font-weight: 700;
  color: var(--sp-text);
  white-space: nowrap;
  padding: 6px 6px;
}
.head__link:hover { text-decoration: underline; }

/* 会員登録＝この画面でいちばん押してほしいもの。白く塗って1つだけ出す */
/* 帯から色を抜いたので、**ここが画面でいちばん強い色**になる */
.btn-join {
  font-size: calc(12.5px * var(--sp-scale));
  font-weight: 700;
  padding: 9px 16px;
  border-radius: var(--sp-radius-pill);
  background: var(--sp-blue);
  color: #fff;
  white-space: nowrap;
}
.btn-join:hover { background: var(--sp-blue-dark); }

/* あとで読む の件数。0件のときは出さない（何も無いのに「0」が付くと気が散る） */
.icon-btn--save { position: relative; text-decoration: none; }
.icon-btn__count {
  position: absolute;
  top: -6px; right: -6px;
  min-width: 17px;
  padding: 0 4px;
  border-radius: var(--sp-radius-pill);
  background: var(--sp-blue);
  color: #fff;
  font-family: var(--sp-font-display);
  font-size: 10px;
  font-weight: 700;
  line-height: 17px;
  text-align: center;
}

.burger { display: none; }

/* --- スマホのメニュー --------------------------------------------------------
   **押しても何も起きない状態だった**（2026-09-20 編集長のご指摘）。
   ナビ・会員まわり・ニュースレターをここにまとめる */
.menu { background: var(--sp-card); border-bottom: 1px solid var(--sp-line); }
.menu__inner { padding-block: var(--sp-s5); }
.menu__list { list-style: none; margin: 0; padding: 0; }
.menu__search { padding-block: 0 var(--sp-s4); }
.menu__list a {
  display: block;
  padding-block: var(--sp-s3);
  font-size: calc(16px * var(--sp-scale));
  font-weight: 700;
  color: var(--sp-ink);
  border-bottom: 1px solid var(--sp-line);
}
.menu__list a:hover { color: var(--sp-link); }
.menu__list--sub { margin-top: var(--sp-s4); }
.menu__list--sub a { font-size: calc(14px * var(--sp-scale)); font-weight: 700; color: var(--sp-text); }
.menu__count {
  display: inline-block;
  margin-left: var(--sp-s2);
  min-width: 18px;
  padding: 0 5px;
  border-radius: var(--sp-radius-pill);
  background: var(--sp-blue-wash);
  color: var(--sp-link);
  font-family: var(--sp-font-display);
  font-size: 11px;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
}
.menu__join {
  display: block;
  margin-top: var(--sp-s5);
  text-align: center;
  /* 帯の「会員登録」と同じ黒い面（青は文字の差し色。面に使っていたのは名残・2026-10-05 編集長のご指摘） */
  background: var(--sp-blue);
  color: #fff;
  padding: 13px;
  font-size: calc(15px * var(--sp-scale));
}
.menu__join:hover { background: var(--sp-blue-dark); }

.topics { background: var(--sp-card); border-bottom: 1px solid var(--sp-line); }
/* **色の点をやめた**（2026-09-22 編集長のご指示で配色数を絞った）。
   7つの点＝7色で、画面の配色数がここだけで7つ増えていた。
   テーマの見分けは**言葉**で足りる（色は写真が担う） */
/* テーマは横に流れるが、**切替（Aa / 🌙）は流さない**。
   スクロールの中に入れると、押したいときに画面の外にあることがある。

   高さは**切替ボタン（30px）が決めている**ので、余白は
   `.topics__row` 側に持たせる（`.topics__inner` に付けても
   ボタンのぶん背が高いまま変わらない。2026-09-20 実測） */
.topics__row {
  padding-block: var(--sp-s4);
  display: flex;
  align-items: center;
  gap: var(--sp-s4);
  max-width: var(--sp-max);
  margin-inline: auto;
  padding-inline: var(--sp-gutter);
}
.topics__inner {
  display: flex;
  gap: var(--sp-s6);
  overflow-x: auto;
  min-width: 0;
  flex: 1;
  scrollbar-width: none;
}
.topics__tools { display: flex; gap: var(--sp-s2); flex: none; }
.topics__inner::-webkit-scrollbar { display: none; }
/* 狭い幅では、帯の右端を薄くして「まだ続く」と分かるようにする（2026-10-04 スマホの点検）。
   切れた文字（「サーキュラーエコノ」）が、崩れではなく横に送れる印に見えるように。
   最後の項目が薄いまま止まらないよう、末尾に同じ幅の余白を置く。mask は色ではなく透け方だけを決める */
@media (max-width: 860px) {
  .topics__inner { mask-image: linear-gradient(to right, black calc(100% - 32px), transparent); }
  .topics__inner::after { content: ""; flex: none; width: 16px; }
}
/* ラベルではなく**行き先**なので、メタ表記（11px）より一段上げて 13px。

   ただし**太さは落とす**（2026-09-21 編集長のご指摘
   「グローバルナビと同じフォントサイズだと、少しみづらい」）。
   11px に戻したくなるが、見づらさの原因は大きさ、ナビと紛らわしい原因は
   **大きさと太さが完全に一致していること**で、別々の話。
   大きさを戻すと最初の指摘に逆戻りするので、**太さだけで差を付ける**。
       1段目（ナビ）  13px / 700 / --sp-ink
       2段目（テーマ）13px / 400 / --sp-text
   色の違い（ink と text）だけでは弱かった——太さが同じだと同じ段に見える */
/* **太字にして、少し小さく**（2026-09-22 編集長のご指示）。
   ナビ（13px / 700）とは**大きさで差を付ける**。
   以前は「太さで差を付ける」形にしていたが、太字のほうが読みやすいという
   ご判断なので、差の付け方を太さ→大きさに移した。
       1段目（ナビ）  13px / 700
       2段目（テーマ）12px / 700  ← 太字だが一段小さい */
.topics a {
  font-size: calc(12px * var(--sp-scale));
  font-weight: 700;
  color: var(--sp-text);
  white-space: nowrap;
  padding-bottom: 2px;
  border-bottom: 2px solid transparent;
  /* 2文字の項目（AI・2026-10-03）でも押せる幅を24px取る。中身が短いときだけ効く */
  min-width: 24px;
  text-align: center;
  /* **縮ませない。** min-width を書くと既定の min-width: auto（文字の幅より縮まない）が外れ、
     横に流す帯の中で各項目が24pxまで潰れて、文字が隣と重なった（2026-10-04 編集長のスマホで発見。
     0.5.1 で入れた崩れ）。check-theme.js が「文字が箱からはみ出した要素」を数える */
  flex: none;
}
.topics a:hover { color: var(--sp-link); border-bottom-color: var(--sp-link); }

/* --- 検索 -------------------------------------------------------------------
   ヘッダーの中に置く（固定の帯の一部）。押すと下に伸びる。
   **WordPress の標準の形**（GET で `?s=…`）なので、実装時はそのまま動く */
.search { background: var(--sp-card); border-bottom: 1px solid var(--sp-line); }
.search__form {
  display: flex;
  gap: var(--sp-s2);
  align-items: center;
  padding-block: var(--sp-s4);
}
/* 16px 未満だと iOS が勝手に拡大し、戻すのは手作業になる */
.search__input {
  flex: 1;
  min-width: 0;
  font-family: inherit;
  font-size: 16px;
  color: var(--sp-ink);
  background: var(--sp-bg);
  padding: 11px 14px;
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
}
.search__input::placeholder { color: var(--sp-text-soft); }
.search__submit {
  flex: none;
  font-family: inherit;
  font-size: calc(13px * var(--sp-scale));
  font-weight: 700;
  padding: 12px 20px;
  border: 0;
  border-radius: var(--sp-radius-pill);
  background: var(--sp-blue);   /* 黒い面（「会員登録」と揃える） */
  color: #fff;
  cursor: pointer;
}
.search__submit:hover { background: var(--sp-blue-dark); }
.search__close {
  flex: none;
  display: grid;
  place-items: center;
  width: 38px; height: 38px;
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
  background: none;
  color: var(--sp-text);
  font-family: inherit;
  font-size: 14px;
  cursor: pointer;
}
.search__close:hover { border-color: var(--sp-link); color: var(--sp-link); }
.search__note {
  font-size: var(--sp-fs-meta);
  color: var(--sp-text-soft);
  line-height: 1.7;
  margin: 0;
  padding-bottom: var(--sp-s4);
}

/* --- ② 今日のニュース：左に1本（アイキャッチ付き）＋ 右に5本 ---------------
   CEHub と同じ形（2026-09-20 編集長のご判断）。前の版は新着を3列に流していたが、
   **横読みか縦読みか分からず、新着の順番が読めなかった**。
   1列に積めば「上が最新」で迷わない。アイキャッチも出せる。

   写真の大きさ（実測）:
       リード   720px 表示 → 1000px の写真で 0.72倍に縮小＝くっきり
       サムネ   104px 表示 → どんな写真でも十分
   全幅にしないので、写真の解像度への要求が下がる */
.hero { padding-top: var(--sp-s7); }
.hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: var(--sp-s7);
  align-items: start;
}

/* リード＝今日いちばん読ませたい1本 */
/* **リードも白いカードにする**（2026-09-22）。
   コラム・インタビューをカードにしたので、ここだけ地に直置きだと
   「まだ作りかけ」に見える。**同じ画面の中で面の扱いを揃える** */
.lead {
  position: relative;
  background: var(--sp-card);
  border-radius: var(--sp-radius-lg);
  overflow: hidden;
  box-shadow: var(--sp-shadow);
}
.lead__link { display: block; }
.lead__thumb {
  aspect-ratio: 16 / 9;
  max-width: 100%;
  /* カードが角を切るので、ここでは丸めない */
  border-radius: 0;
  margin-bottom: var(--sp-s5);
}
/* 面の中に入ったので、文字の左右にも余白が要る。
   **大きいカードなので 32px**（小さいカードの 16px より広く取る） */
.lead__meta, .lead__title, .lead__ex { padding-inline: var(--sp-s6); }
.lead__ex { padding-bottom: var(--sp-s6); }
.lead__meta { padding-top: var(--sp-s5); }
@media (max-width: 600px) {
  .lead__meta, .lead__title, .lead__ex { padding-inline: var(--sp-s5); }
  .lead__ex { padding-bottom: var(--sp-s5); }
}
}
.lead__img { width: 100%; height: 100%; object-fit: cover; }
.lead__meta { margin-bottom: var(--sp-s3); }
/* ① 大きさの落差：ここが極大。
   **行の長さは見出し自身に `em` で持たせる。** 親に置くと親の16pxが基準になり
   潰れる（2026-09-20 実測でヒーローが961pxになった） */
.lead__title {
  font-size: var(--sp-fs-lead);
  font-weight: 700;
  line-height: 1.42;
  letter-spacing: -0.012em;
  color: var(--sp-ink);
  margin: 0 0 var(--sp-s4);
  max-width: 21em;
}
.lead__link:hover .lead__title { color: var(--sp-link); }
.lead__ex {
  font-size: calc(15px * var(--sp-scale));
  color: var(--sp-text);
  margin: 0;
  max-width: 38em;
}

/* 新着＝2本目以降。**1列に積む**ので「上が最新」で迷わない */
/* **白い面に戻した**（2026-09-22）。
   一度は「地が灰色なら白い箱は要らない」と外したが、
   **記事カードを白くしたので、ここも面を持たないと揃わない**。
   罫線1本で区切る形は、面の中でそのまま使える */
.latest {
  background: var(--sp-card);
  border-radius: var(--sp-radius-lg);
  box-shadow: var(--sp-shadow);
  padding: var(--sp-pad);
}
/* 面の中の見出し。**節の見出し（40px）より小さく、ラベル（11px）より大きい**。
   節の英語を大きくしたので、ここが 11px のままだと段が飛びすぎる */
.latest__h {
  display: flex;
  align-items: center;
  gap: var(--sp-s2);
  font-family: var(--sp-font-display);
  font-size: calc(20px * var(--sp-scale));
  font-weight: 700;
  letter-spacing: -0.01em;
  text-transform: uppercase;
  color: var(--sp-ink);
  padding-bottom: var(--sp-s3);
  border-bottom: 1px solid var(--sp-line-strong);
  margin: 0;
}
.latest ul { margin: 0; padding: 0; list-style: none; }
.latest li { border-bottom: 1px solid var(--sp-line); }
/* **行の <a> だけ**に効かせる（.latest a と書いていたので「ニュース一覧 →」まで 104px の列に入り、
   スマホで矢印だけ次の行に落ちた。2026-10-05 編集長のご指摘） */
.latest li > a {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: var(--sp-s4);
  align-items: start;
  padding-block: var(--sp-s4);
}
.latest__thumb {
  aspect-ratio: 4 / 3;
  max-width: 100%;
  border-radius: var(--sp-radius);
}
.latest__title {
  font-size: var(--sp-fs-list);
  font-weight: 700;
  line-height: 1.65;
  color: var(--sp-ink);
  margin: var(--sp-s2) 0 0;
}
.latest li > a:hover .latest__title { color: var(--sp-link); }
/* 新着の「あとで読む」（2026-10-12 編集長のご指摘。トップでここだけ無かった）。行の右上に置き、文字の列はその分だけ空ける */
.latest li { position: relative; }
.latest li > .save { top: var(--sp-s4); right: 0; }
.latest li > a > div { padding-right: 40px; }
.latest__more {
  display: block;
  padding-top: var(--sp-s4);
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-link);
  text-align: right;
}
.latest__more:hover { text-decoration: underline; }

/* --- メタ表記 ------------------------------------------------------------- */
.meta {
  display: flex;
  align-items: center;
  gap: var(--sp-s2);
  flex-wrap: wrap;
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-text-soft);
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
}
/* **3つの軸を、色ではなく「面・枠・素」で分ける**
   （2026-09-22 編集長のご指示で7色を外した）。
   色で分けると配色数が増える。**形と濃さだけで3段作れる。**
     テーマ … 薄い面（地の色を借りる）
     実務   … 枠だけ
     地域   … 素の文字（国内／国際の2値しかないので、札にすると場所を取る） */
.tag {
  font-family: var(--sp-font);
  font-weight: 700;
  padding: 3px 10px;
  border-radius: var(--sp-radius-pill);
  background: none;
  border: 1px solid transparent;
  color: var(--sp-text-soft);
  white-space: nowrap;
}
/* 札が1つで行より長いときだけ、札の中で折り返す（英語ページの「Human Rights & Supply Chains」が
   320px＋1.15倍で 62px はみ出した。2026-10-03）。.meta は折り返す flex なので、普段は札ごと次の行に
   送られ、日本語の短い札が途中で折れることはない */
.meta > .tag { white-space: normal; max-width: 100%; }
.tag--theme {
  background: var(--sp-bg);
  color: var(--sp-ink);
}
.tag--practice {
  background: none;
  color: var(--sp-text-soft);
  border-color: var(--sp-line-strong);
  padding: 2px 9px;
}
.tag--region {
  background: none;
  border-color: transparent;
  color: var(--sp-text-soft);
  font-weight: 400;
  padding: 0;
}
.meta--light .tag--region { color: rgba(255, 255, 255, 0.78); }
html[data-sp-theme="dark"] .tag--theme { background: var(--sp-line); color: var(--sp-ink); }
.meta--light { color: rgba(255, 255, 255, 0.78); }
.meta--light .tag--theme { background: rgba(255, 255, 255, 0.18); color: #fff; }
.meta--light .tag--practice { background: none; border-color: rgba(255,255,255,0.45); color: rgba(255, 255, 255, 0.85); }

/* --- ① 大きさの落差：実務の番号を極大に ----------------------------------
   番号は業務の**順序**に意味があるから付けている（飾りではない）ので、
   大きくしても嘘にならない */
/* **箱をやめた**（2026-09-21 編集長のご指摘「AIぽい」）。
   同じ大きさ・同じ色・同じ形の箱が8つ均等に並ぶのは、
   生成AIのランディングページの典型形。しかも
   **「8分類は均等ではない」と決めた設計と、見た目が食い違っていた。**

   直したのは3つ。
   ① 面と丸みを外し、**罫線で区切る一覧**にする（箱の羅列に見えなくなる）
   ② **段は大きさと太さで作る。** 分類名を小さいラベルに落としてみたが、
      **8つの分類を見渡すのに分類名が読めないと使えない**（編集長のご指摘）。
      分類名を大きく戻し、困りごとは本文より小さい二番目の声にする
   ③ 困りごとを**鉤括弧で括る。** 実際に担当者が口にする言葉なので、
      声として見せると人の気配が出る（説明文だと資料に見える） */
/* 実務は3つの大分類 × 4つ（harch.jp/business と同じ。2026-10-10 編集長のご判断）。
   **4列のカードに写真**（2026-10-11 編集長のご依頼「4カラムで項目ごとに画像を」）。上の「箱をやめた」は写真の無い8つのときの判断で、
   写真が入ると「写真のある一覧＝カード」の決まりに入る（コラム・インタビューと同じ白い面）。
   大分類の見出しは行の上に1行。並びは PC 4列 → 中間 2列 → スマホ 1列（写真を左に小さく・リストの行と同じ形）。
   4つは必ず割り切れるので最終行が空かない。**auto-fit は使わない**（列の数を決めて割る） */
.practice { display: grid; gap: var(--sp-s7); }
.pgroup { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-s4); padding-top: var(--sp-s5); border-top: 1px solid var(--sp-line-strong); }
.pgroup__h { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--sp-s1) var(--sp-s4); }
.pgroup__en {
  /* 等幅の大文字・字間広め・青は「AI の出力っぽい」（2026-10-12 編集長のご指摘）。見出しの欧文（Manrope）で、大文字にせず、墨の色で */
  font-family: var(--sp-font-display); font-size: calc(18px * var(--sp-scale)); font-weight: 700;
  letter-spacing: -0.01em; color: var(--sp-ink); margin: 0;
}
.pgroup__ja { font-size: calc(15px * var(--sp-scale)); font-weight: 700; line-height: 1.6; color: var(--sp-ink); margin: 0; }
.pgroup__list { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-s4); }
@media (min-width: 600px) { .pgroup__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-s5); } }
@media (min-width: 1000px) { .pgroup__list { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pcard {
  display: flex; flex-direction: column;
  background: var(--sp-card);
  border-radius: var(--sp-radius-lg);
  overflow: hidden;   /* 写真の角をカードの角で切る */
  box-shadow: var(--sp-shadow);
  transition: transform 0.2s var(--sp-ease), box-shadow 0.2s var(--sp-ease);
}
.pcard:hover { transform: translateY(-3px); box-shadow: var(--sp-shadow-hover); }
.pcard__ph { aspect-ratio: 16 / 10; flex: none; }
.pcard > .pcard__t { margin: var(--sp-pad) var(--sp-pad) var(--sp-s2); }
.pcard > .pcard__v { margin: 0 var(--sp-pad) calc(var(--sp-pad) + 4px); }
.pcard > .pcard__t:last-child { margin-bottom: calc(var(--sp-pad) + 4px); }
/* スマホは1列。写真を左に 96px（4:3）・文字を右に（一覧の「リスト」の行と同じ大きさ） */
@media (max-width: 599px) {
  .pcard { display: grid; grid-template-columns: 96px minmax(0, 1fr); column-gap: var(--sp-s4); align-items: start; padding: var(--sp-s3); border-radius: var(--sp-radius); }
  .pcard__ph { grid-row: 1 / span 2; aspect-ratio: 4 / 3; border-radius: calc(var(--sp-radius) - 4px); }
  .pcard > .pcard__t { margin: 0 0 var(--sp-s1); }
  .pcard > .pcard__v { margin: 0; }
  .pcard > .pcard__t:last-child { margin-bottom: 0; }
}
/* **分類名が主役に戻る**（2026-09-21 編集長のご指摘
   「カテゴリが大きく表示されていた方が見やすかった」）。
   箱に戻さずに見やすくするので、**大きさと太さだけで段を作る**。
   分類名は等幅にしない（日本語を等幅で組むと記号の列に見える） */
.pcard__t {
  font-size: calc(16px * var(--sp-scale));   /* 4列のカードの幅（約 270px）で、いちばん長い名前が2行に収まる大きさ */
  font-weight: 700;
  line-height: 1.45;
  color: var(--sp-ink);
  margin: 0 0 var(--sp-s2);
  transition: color 0.2s var(--sp-ease);
}
.pcard:hover .pcard__t { color: var(--sp-link); }
/* 名前は語の切れ目（<wbr>）でだけ折る。カタカナの途中で折れて1文字だけ次の行に落ちないように（springl_practice_wbr）。
   語1つが列より長いときだけ、どこでも折れる（はみ出さない） */
.pcard__t { word-break: keep-all; overflow-wrap: anywhere; }
/* 困りごとは**二番目の声**。鉤括弧は残す（担当者が口にする言葉なので、
   声として見せると人の気配が出る）が、太さと大きさは題に譲る */
.pcard__v { list-style: none; margin: 0; padding: 0; }
/* 声は助詞の後ろでだけ折る（2026-10-12 編集長のご指摘「変なところで改行」）。折り目は springl_voice_wbr() が <wbr> で入れ、
   ここは keep-all（それ以外では折らない）。文節で折る指定（auto-phrase）は「社内の／腹落ちが…」と早く折って右が空き、
   何も指定しないと「進ま／ない」」と語の途中で折れた。折り目の無い長い語だけは overflow-wrap ではみ出さない */
.pcard__v li {
  word-break: keep-all; overflow-wrap: anywhere;
  font-size: calc(13px * var(--sp-scale));
  font-weight: 400;
  line-height: 1.8;
  color: var(--sp-text);
}

/* --- はじめての方の入口 --------------------------------------------------
   **箱をやめたぶん、ここだけが面を持つので自然に目立つ。**
   「目立たせる」を色や大きさで押すのではなく、**まわりを静かにして作る** */
.beginner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sp-s3) var(--sp-s5);
  margin-top: var(--sp-s7);
  padding: var(--sp-s6);
  background: var(--sp-soft);
  border-radius: var(--sp-radius-lg);
  transition: background 0.2s var(--sp-ease);
}
.beginner:hover { background: var(--sp-blue-wash); }
.beginner__l {
  grid-column: 1 / -1;
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-link);
}
.beginner__t {
  font-size: calc(21px * var(--sp-scale));
  font-weight: 700;
  line-height: 1.5;
  color: var(--sp-ink);
  margin-top: var(--sp-s1);
}
.beginner__d {
  grid-column: 1;
  font-size: calc(13.5px * var(--sp-scale));
  line-height: 1.9;
  color: var(--sp-text);
  max-width: 40em;
}
.beginner__go {
  grid-row: 2 / 4;
  grid-column: 2;
  display: grid;
  place-items: center;
  width: 44px; height: 44px;
  border-radius: var(--sp-radius-pill);
  background: var(--sp-blue);
  color: #fff;
  font-size: 18px;
  flex: none;
}
@media (max-width: 600px) {
  .beginner { grid-template-columns: minmax(0, 1fr); padding: var(--sp-s5); }
  .beginner__go { grid-row: auto; grid-column: 1; justify-self: start; }
}

/* --- 事例：全幅の青。地の灰色を1回だけ破る ---------------------------------
   くすんだ紺にしたぶん、ここは明度を少し上げてある */
.sec--case {
  background: var(--sp-blue-band);
  padding-block: var(--sp-s9);
  margin-block: var(--sp-s9);
}
.sec--case .sec__head { border-bottom-color: rgba(255, 255, 255, 0.5); }
/* 帯の中の画像は**濃い紺**で染める。
   地と同じ色で染めると画像が地に溶けて、そこに絵があることが分からない */
.sec--case .ph--tint::after { background: var(--sp-blue-deep); opacity: 0.86; }
/* ラベルは差し色に。地と同じ青のままだと読めない
   （クラスを .sec__eyebrow → .eyebrow に付け替えたとき指定が外れていた） */
.sec--case .sec__titles .eyebrow { color: #fff; }
.sec--case .eyebrow { color: var(--sp-red-on-dark); }
.sec--case .sec__ja { color: var(--sp-on-blue-soft); }
/* 「すべての事例 →」は**白**。赤（--sp-red-on-dark）では青い帯の上で 4.03:1 しか無く、
   4.5:1 に届かなかった（2026-09-23 テーマの検査で発見。試作の検査が .sec__more を見ていなかった） */
.sec--case .sec__more { color: var(--sp-on-dark); }

.cases {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  gap: var(--sp-s7);
  align-items: start;
}
.cases__side { display: grid; gap: var(--sp-s6); }
.ccard { position: relative; }
.ccard__thumb {
  aspect-ratio: 16 / 9;
  max-width: 100%;
  border-radius: var(--sp-radius-lg);
  margin-bottom: var(--sp-s4);
}
/* 写真が左・文字が右。**3つとも升を明示する**——
   あとで読むのボタンだけを明示すると、残りの自動配置がずれて
   写真と文字が入れ替わる（実測。1件だけ置いて崩した） */
.ccard--sm { display: grid; grid-template-columns: 128px minmax(0, 1fr); gap: var(--sp-s4); }
.ccard--sm .ccard__thumb { grid-area: 1 / 1; margin-bottom: 0; aspect-ratio: 4 / 3; }
.ccard--sm .ccard__body { grid-area: 1 / 2; min-width: 0; }
.ccard__country {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-eyebrow);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-red-on-dark);
}
.ccard__t {
  font-size: calc(24px * var(--sp-scale));
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: -0.01em;
  color: #fff;
  margin: var(--sp-s3) 0 var(--sp-s3);
}
.ccard--sm .ccard__t { font-size: calc(16px * var(--sp-scale)); line-height: 1.6; }
.ccard:hover .ccard__t { color: var(--sp-red-on-dark); }
.ccard__d {
  font-size: calc(13.5px * var(--sp-scale));
  color: var(--sp-on-blue-soft);
  line-height: 1.85;
  margin: 0 0 var(--sp-s4);
}

/* --- あとで読む ---------------------------------------------------------------
   カードの右上に重ねる。**`<a>` の中に `<button>` は置けない**ので、
   カードを入れ物にして、リンクとボタンを兄弟にしてある。
   押されている状態は**色だけで示さない**（塗りと枠も変える） */
.save {
  position: absolute;
  top: var(--sp-s3);
  right: var(--sp-s3);
  z-index: 2;
  display: grid;
  place-items: center;
  width: 32px; height: 32px;
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
  background: var(--sp-card);
  color: var(--sp-text);
  line-height: 1;
  cursor: pointer;
  opacity: 0.85;
  transition: opacity 0.2s var(--sp-ease);
}
.save:hover { opacity: 1; border-color: var(--sp-link); color: var(--sp-link); }
.save[aria-pressed="true"] {
  background: var(--sp-link);
  border-color: var(--sp-link);
  color: var(--sp-on-link);
  opacity: 1;
}

/* しおりの図形。**塗るかどうかで「保存済み」を示す。**
   色だけで示さないという決まりは、枠（背景と縁）の側で守っている */
.bmk { width: 15px; height: 15px; fill: none; }
[aria-pressed="true"] > .bmk { fill: currentColor; }
.icon-btn--save .bmk { width: 16px; height: 16px; }
/* 小さい事例カードは**写真が左・文字が右**なので、カードの右上は文字の上。
   絶対配置のままだと題名の2行目にボタンが重なる（実測 1440/1280px で1件）。
   **写真と同じ升に置いて**右上に寄せる。1列に畳んだ幅でも写真の右上に来る */
.ccard--sm .save {
  position: static;
  grid-area: 1 / 1;
  place-self: start end;
  margin: var(--sp-s2);
}

/* 紺の帯の中。**図形が currentColor を使うので、色を明示する**
   （絵文字のときは、まわりの文字色に関係なく見えていた） */
.sec--case .save { background: var(--sp-blue-deep); border-color: rgba(255,255,255,0.35); color: #fff; }
.sec--case .save:hover { border-color: var(--sp-red-on-dark); color: var(--sp-red-on-dark); }
.sec--case .save[aria-pressed="true"] {
  background: var(--sp-red-on-dark);
  border-color: var(--sp-red-on-dark);
  color: #2b0a06;                       /* 赤の上は濃い色にする */
}

/* --- 記事カード ----------------------------------------------------------- */
.cards {
  display: grid;
  /* **auto-fill**（auto-fit だと、記事が1件の日にその1枚が全幅に伸びた・2026-09-23 本番） */
  grid-template-columns: repeat(auto-fill, minmax(min(250px, 100%), 1fr));
  gap: var(--sp-s5);
}
/* **白いカードにする**（2026-09-22 編集長のご提案）。
   地が薄い灰色に戻ったので、記事カードを白い面にすると1段浮く。
   前は面を持たせず、写真と文字を地に直接置いていた（地が白だったので、
   面を作っても見えなかった）。

   **カード形式にするのは、写真が主役の一覧だけ**（コラム・インタビュー）。
   実務の一覧（`.pcard`）は**箱をやめたまま**にする——同じ大きさの箱が
   8つ均等に並ぶのが「AIぽい」原因だった（第24版・編集長のご指摘）。
   写真のある一覧＝カード、文字だけの一覧＝罫線、で使い分ける */
.card {
  position: relative;
  background: var(--sp-card);
  border-radius: var(--sp-radius-lg);
  /* 写真の角をカードの角で切る（画像側に角丸を持たせない） */
  overflow: hidden;
  box-shadow: var(--sp-shadow);
  transition: transform 0.2s var(--sp-ease), box-shadow 0.2s var(--sp-ease);
}
.card:hover { transform: translateY(-3px); box-shadow: var(--sp-shadow-hover); }
.card__link { display: block; }
.card__thumb {
  aspect-ratio: 16 / 9;
  max-width: 100%;
  /* カードが角を切るので、ここでは丸めない */
  border-radius: 0;
}
/* 面の中に入ったので、左右にも余白が要る */
.card__body { padding: var(--sp-pad) var(--sp-pad) calc(var(--sp-pad) + 4px); }
.card__t {
  font-size: var(--sp-fs-card);
  font-weight: 700;
  line-height: 1.65;
  color: var(--sp-ink);
  margin: var(--sp-s3) 0 0;
}
.card:hover .card__t { color: var(--sp-link); }

/* --- データ・レポート：数値を探す --------------------------------------------
   記事やスライドに使う数値を、**課題 × 領域**で探す道具
   （2026-09-20 編集長のご説明。レポートの紹介記事ではない）。
   軸の一覧と根拠は docs/data-library.md。

   カードは**数値を主役にする**。この画面で唯一、数字が絵になる場所 */
/* ここは**道具**なので面を残す（押して選ぶ場所だと形で分かるように）。
   読み物の側から面を外したぶん、道具だけが白いのは意味のある差になる */
.finder {
  background: var(--sp-soft);
  border-radius: var(--sp-radius-lg);
  padding: var(--sp-pad);
  margin-bottom: var(--sp-s6);
  display: grid;
  gap: var(--sp-s4);
}
.finder__row {
  display: grid;
  grid-template-columns: 4em minmax(0, 1fr);
  gap: var(--sp-s4);
  align-items: baseline;
}
.finder__label {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-text-soft);
  white-space: nowrap;
}
.finder__chips { display: flex; flex-wrap: wrap; gap: var(--sp-s2); }
.chip {
  font-size: var(--sp-fs-meta);
  font-weight: 400;
  line-height: 1.5;
  padding: 5px 12px;
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
  color: var(--sp-text);
  /* 札は <button> のことが多い。**地を指定しないとブラウザのボタンの灰色が出る**
     （暗いモードで灰色の地に灰色の字になり、3.19:1 まで落ちた。2026-09-23 テーマの検査で発見） */
  background: transparent;
  white-space: nowrap;
}
.chip:hover { border-color: var(--sp-link); color: var(--sp-link); background: var(--sp-blue-wash); }
/* いま選ばれているもの。**色だけで示さない**——枠と太さも変える
   （色の見え方は人によって違う） */
.chip--on {
  background: var(--sp-link);
  border-color: var(--sp-link);
  color: var(--sp-on-link);
  font-weight: 700;
}
.chip--on:hover {
  background: var(--sp-blue-dark);
  border-color: var(--sp-blue-dark);
  color: var(--sp-on-link);
}

.datacards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr));
  gap: var(--sp-s4);
}
.dcard {
  display: block;
  position: relative;
  background: var(--sp-soft);
  border-radius: var(--sp-radius-lg);
  padding: var(--sp-pad);
  transition: transform 0.2s var(--sp-ease), box-shadow 0.2s var(--sp-ease);
}
.dcard:hover { transform: translateY(-3px); box-shadow: var(--sp-shadow-hover); }
/* 1件ごとのページに飛ぶ。**押せることを形で出す**
   （数値だけのカードは、読み物に見えて押されないことがある） */
.dcard__go {
  position: absolute;
  top: var(--sp-s5);
  right: var(--sp-s5);
  font-family: var(--sp-font-display);
  font-size: calc(15px * var(--sp-scale));
  font-weight: 700;
  color: var(--sp-line-strong);
  transition: color 0.24s var(--sp-ease), transform 0.24s var(--sp-ease);
}
.dcard:hover .dcard__go { color: var(--sp-link); transform: translateX(3px); }
.dcard__scope {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-eyebrow);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-text-soft);
}
/* 数値が主役。ここだけ極端に大きくする */
.dcard__value {
  font-family: var(--sp-font-display);
  font-size: calc(46px * var(--sp-scale));
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -0.03em;
  color: var(--sp-link);
  font-variant-numeric: tabular-nums;
  margin: var(--sp-s2) 0 var(--sp-s3);
}
.dcard__unit {
  font-size: calc(18px * var(--sp-scale));
  font-weight: 700;
  letter-spacing: 0;
  margin-left: 2px;
}
.dcard__t {
  font-size: calc(13.5px * var(--sp-scale));
  font-weight: 700;
  line-height: 1.7;
  color: var(--sp-ink);
  margin: 0 0 var(--sp-s3);
}
/* 出典は必ず出す。数値だけ持ち出されると、引用の作法が崩れる */
.dcard__src {
  font-size: var(--sp-fs-meta);
  color: var(--sp-text-soft);
  line-height: 1.7;
  border-top: 1px solid var(--sp-line);
  padding-top: var(--sp-s3);
}

/* --- フッター ------------------------------------------------------------- */
.foot { background: var(--sp-foot); color: var(--sp-on-dark-soft); padding-block: var(--sp-s7) var(--sp-s6); }

/* --- 上段: ニュースレターと SNS -------------------------------------------
   **本文の #letter と同じ申し込み先**。最後まで読んだ人のための繰り返しで、
   別の導線を増やしたわけではない（増やすとどちらを押すか読者が決められない） */
.foot__cta {
  display: grid;
  gap: var(--sp-s6);
  padding-bottom: var(--sp-s7);
  margin-bottom: var(--sp-s7);
  border-bottom: 1px solid rgba(255, 255, 255, 0.16);
}
@media (min-width: 860px) {
  .foot__cta { grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: var(--sp-s8); }
}
.fcta__t {
  font-size: calc(19px * var(--sp-scale));
  font-weight: 700; color: #fff; margin: 0 0 var(--sp-s2); line-height: 1.5;
}
.fcta__d { font-size: calc(13px * var(--sp-scale)); margin: 0 0 var(--sp-s4); }
.fcta__form { display: flex; flex-wrap: wrap; gap: var(--sp-s2); max-width: 30em; }
.fcta__input {
  flex: 1 1 200px;
  min-width: 0;
  /* **16px を下回らせない。** iOS が勝手に拡大し、戻すのは手作業になる */
  font-size: 16px;
  font-family: inherit;
  padding: 11px 16px;
  border-radius: var(--sp-radius-pill);
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(255, 255, 255, 0.06);
  color: #fff;
}
.fcta__input::placeholder { color: rgba(255, 255, 255, 0.5); }
.fcta__input:focus-visible { outline-color: #fff; box-shadow: 0 0 0 4px rgba(0,0,0,0.55); }
.fcta__submit {
  flex: none;
  font-family: inherit;
  font-size: calc(13px * var(--sp-scale));
  font-weight: 700;
  padding: 11px 22px;
  border: 0;
  border-radius: var(--sp-radius-pill);
  background: #fff;
  color: var(--sp-blue);
  cursor: pointer;
}
.fcta__submit:hover { background: var(--sp-blue-soft); }
/* **登録の前に中身を確かめられるように。** メールアドレスを入れるかどうかは、
   何が届くか分からないと決められない（本文の節から引き継いだ） */
.fcta__back {
  display: inline-block;
  font-size: calc(13px * var(--sp-scale));
  font-weight: 700;
  margin-top: var(--sp-s3);
  color: #fff;
  border-bottom: 1px solid rgba(255, 255, 255, 0.45);
}
.fcta__back:hover { border-bottom-color: #fff; }
.fcta__note { font-size: var(--sp-fs-meta); margin: var(--sp-s3) 0 0; color: #fff; }

/* SNS。**丸いボタンにする**——並べたときに3つで1つの組に見える */
.fsns__list { display: flex; gap: var(--sp-s3); list-style: none; margin: 0; padding: 0; }
.fsns__list a {
  display: grid;
  place-items: center;
  width: 40px; height: 40px;
  border-radius: var(--sp-radius-pill);
  border: 1px solid rgba(255, 255, 255, 0.28);
  color: var(--sp-on-dark-soft);
}
.fsns__list a:hover { background: #fff; color: var(--sp-blue); border-color: #fff; }
.fsns__i { width: 17px; height: 17px; }

/* --- リンクの列 ----------------------------------------------------------- */
.foot__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr)); gap: var(--sp-s7) var(--sp-s5); }
/* 列が5つに増えたので、広い幅でだけ「ブランド＋4列」に固定する */
@media (min-width: 1100px) { .foot__grid { grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr; } }
/* 狭い幅では**ブランドの列を横いっぱいに広げる**。
   紹介文が長いので、171px の列に入れると9行になる（実測）。
   1行が短すぎる文章は、読める・読めない以前に読む気がしなくなる */
@media (max-width: 700px) { .foot__brand { grid-column: 1 / -1; } }
.logo--foot { font-size: calc(22px * var(--sp-scale)); color: #fff; }
/* タグライン（2026-10-10 編集長のご判断）。ロゴのすぐ下に1行 */
.foot__tagline {
  margin: var(--sp-s4) 0 0;
  font-family: var(--sp-font-display); font-weight: 700;
  font-size: calc(15px * var(--sp-scale)); line-height: 1.5; letter-spacing: 0.04em;
  color: var(--sp-on-dark);
}

/* 読み上げにだけ渡すラベル（画面には出さない） */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.foot h3 {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-eyebrow);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  text-transform: uppercase;
  color: #fff;
  margin: 0 0 var(--sp-s4);
}
.foot ul { margin: 0; padding: 0; list-style: none; }
/* **押せる範囲を 24px 以上にする**（WCAG 2.2 の 2.5.8 Target Size (Minimum)）。
   実測では 15px しかなかった——`<a>` は行内なので、箱の高さが
   line-height ではなく**文字そのものの高さ**になる。
   `inline-block` にすると行の高さを受け取る。
   文章の中のリンクは対象外だが、**リンクだけを並べた一覧は対象**。
   余白が増えるぶん `margin-bottom` を詰めて、フッターの高さは変えない */
.foot li { margin-bottom: 2px; font-size: calc(13px * var(--sp-scale)); }
/* **効かせるのはリンクの一覧だけ**（`.foot__grid` の4列）。
   最初は `.foot li a` と広く書いたが、SNS の丸ボタンも `.foot` の中の
   `li > a` なので巻き込み、`display: grid`（中央寄せ）を `inline-block` で
   上書きしてしまった。**図形が 10.5px 左・8.5px 上にずれた**
   （2026-09-21 編集長のご指摘）。
   テーマの行は点を横に並べる `inline-flex` なので、そこは戻す */
.foot__grid li a { display: inline-block; min-height: 24px; min-width: 24px; padding-block: 2px; }
.foot__grid li a.topic { display: inline-flex; }
/* 指で押す幅では広げる */
@media (max-width: 700px) {
  .foot__grid li a { min-height: 34px; padding-block: 6px; }
}
.foot a:hover { color: #fff; }
.foot__about { font-size: calc(13px * var(--sp-scale)); line-height: 1.9; margin: var(--sp-s4) 0 0; }

/* B Corp 認証。**白抜きの支給データをそのまま使う**——色を変えない・
   引き伸ばさない（ロゴの使用規定）。フッターは明暗どちらのモードでも
   暗いので、白のまま両方で読める。
   周りに余白を取る（規定で「まわりに一定の空きを取る」とされている） */
.foot__bcorp {
  display: inline-block;
  margin-top: var(--sp-s5);
  /* 高さだけ決めて幅は比率に任せる。**両方指定すると歪む**。
     72px だと「bcorp.com」の行が約6pxで読めなかった（実測）ので 92px */
  height: 92px;
}
.foot__bcorp img { height: 100%; width: auto; display: block; }
.foot__bcorp:hover { opacity: 0.8; }
/* CO₂。測れなければ行ごと出さない（0件は理由とセット、の逆で
   「測れていないのに0と出す」ことをしない） */
.foot__co2 {
  font-size: var(--sp-fs-meta);
  line-height: 1.8;
  color: var(--sp-on-dark-soft);
  margin: var(--sp-s6) 0 0;
  padding-top: var(--sp-s5);
  border-top: 1px solid rgba(255, 255, 255, 0.16);
  font-variant-numeric: tabular-nums;
}
.foot__co2-note { display: block; opacity: 0.7; }
.foot__co2 + .foot__bottom { border-top: 0; margin-top: var(--sp-s4); padding-top: 0; }

.foot__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.16);
  margin-top: var(--sp-s7);
  padding-top: var(--sp-s5);
  font-family: var(--sp-font-display);
  font-size: var(--sp-fs-meta);
  letter-spacing: 0.06em;
}

/* 試作であることを画面に出す（本番と取り違えないため） */
.stamp {
  background: #fdf6e4;
  color: #6b4700;
  font-size: var(--sp-fs-meta);
  line-height: 1.7;
  padding: 9px var(--sp-gutter);
  text-align: center;
}

/* --- 狭い画面 -------------------------------------------------------------
   360 / 390 / 320px＋文字1.15倍の3条件で必ず測る */
@media (max-width: 1000px) {
  .hero__grid { grid-template-columns: minmax(0, 1fr); gap: var(--sp-s7); }
  .cases { grid-template-columns: minmax(0, 1fr); gap: var(--sp-s7); }
  .lead__title { max-width: none; }
}
/* **余白を広げたら 1280px で 16px あふれた**（2026-09-22 実測）。
   ナビ7項目＋道具は、広い幅でしか余裕を持って並べられない。
   **中間の幅では詰める**（畳むのはまだ早い——1280px でナビを消すと、
   ノートPCの人が全員ハンバーガーになる）。
   ニュースレターは畳んだ先のメニューにもあるので、ここで先に落とす */
@media (max-width: 1340px) {
  .head__main { gap: var(--sp-s4); }
  .nav { gap: 2px; }
  .nav a { padding: 9px 10px; }
  .head__tools { gap: var(--sp-s2); }
  .head__link--letter { display: none; }
  .topics__inner { gap: var(--sp-s5); }
}

/* 道具が増えたので、ナビを畳む幅を上げた（860 → 1100px）。
   畳んだ先は**ハンバーガーのメニュー**（押しても何も起きない状態だった） */
@media (max-width: 1100px) {
  .nav { display: none; }
  .burger { display: grid; }
  .head__tools { margin-left: auto; }
  .head__link--letter { display: none; }   /* メニューの中にある */
  .sec__head { margin-bottom: var(--sp-s6); }
}
/* 幅の区切りでは足りないときの詰め方（theme.js が帯を測って data-sp-fit を付ける。2026-10-11 編集長のご指摘
   「Editor Tools も含めると帯がはみ出ている」）。右側の中身は人によって違う（編集部は Editor Tools、会員はダッシュボード・会員情報）。
   実測: 編集部で 1366px 以上は 165px、会員でも 22px はみ出していた。1: 間を詰める → 2: タグラインを外す → 3: ナビをメニューに畳む */
.head[data-sp-fit] .head__main { gap: var(--sp-s4); }
.head[data-sp-fit] .nav { gap: 2px; }
.head[data-sp-fit] .nav a { padding: 9px 10px; }
.head[data-sp-fit] .head__tools { gap: var(--sp-s2); }
.head[data-sp-fit] .head__link--letter { display: none; }
.head:is([data-sp-fit="2"], [data-sp-fit="3"]) .logo__tag { display: none; }
/* ログインの状態が決まって測り直すまでは見せない（場所は取っておく。theme.js が data-sp-fitted を付ける） */
.head:not([data-sp-fitted]) .logo__tag { visibility: hidden; }
.head[data-sp-fit="3"] .nav { display: none; }
.head[data-sp-fit="3"] .burger { display: grid; }
.head[data-sp-fit="3"] .head__tools { margin-left: auto; }
/* さらに狭いところは、**会員登録だけ残す**（いちばん押してほしいもの）。
   ログインとあとで読むはメニューの中にある */
@media (max-width: 700px) {
  .head__link { display: none; }
  .icon-btn--save { display: none; }
  .mypage { display: none; }
}
@media (max-width: 560px) {
  /* 検索も畳む。メニューの中から探せる */
  .icon-btn--search { display: none; }
  .logo { font-size: calc(22px * var(--sp-scale)); }
  .head__main { min-height: 52px; gap: var(--sp-s3); }
  /* 小さい事例カードの横並びをやめる。128px の絵と文字が同居できない */
  .ccard--sm { grid-template-columns: minmax(0, 1fr); gap: var(--sp-s3); }
  .ccard--sm .ccard__thumb { aspect-ratio: 16 / 9; }
  /* 1列。文字は写真の下に落ちるが、ボタンは写真の升に残す */
  .ccard--sm .ccard__body { grid-area: 2 / 1; }
  .finder__row { grid-template-columns: minmax(0, 1fr); gap: var(--sp-s2); }
}
/* いちばん狭い条件（320px＋文字1.15倍）。
   ロゴと会員登録が1行に入らないので、周りを詰めて**消さずに通す**。

   **面（白いカード）にしたぶん、左右の余白が内側に入る。**
   一度この上書きを `.lead` の近くに書いたが、**効かなかった**——
   `@media` は詳細度を上げないので、**あとに書いた素の指定に負ける**
   （`.latest a` の 104px が後ろにあった）。狭い幅の指定はここに集める */
@media (max-width: 400px) {
  .lead__meta, .lead__title, .lead__ex { padding-inline: var(--sp-s3); }
  .lead__ex { padding-bottom: var(--sp-s3); }
  .latest { padding: var(--sp-s3); }
  /* 文字の列が 152px まで痩せて「人権・サプライチェーン」（177px）が
     入らなくなった（実測）。**写真を小さくして文字に幅を渡す**
     （タグを折り返させると、2行の札が並んで読みにくくなる） */
  .latest li > a { grid-template-columns: 72px minmax(0, 1fr); gap: var(--sp-s3); }
  .ev { padding-inline: var(--sp-s3); }
  .card__body { padding: var(--sp-s3) var(--sp-s3) var(--sp-s4); }
  .logo { font-size: calc(21px * var(--sp-scale)); gap: var(--sp-s2); }
  .ring--lg { width: 24px; height: 24px; }
  .icon-btn { width: 34px; height: 34px; }
  .btn-join { padding: 9px 12px; font-size: calc(12px * var(--sp-scale)); }
}

/* ==========================================================================
   本番化の前に足したもの（2026-09-21・UI/UX ほか5観点の点検）
   ========================================================================== */

/* --- 本文へスキップ --------------------------------------------------------
   キーボードだけで使う人は、いまは**帯の中の12個を通り過ぎないと本文に届かない**
   （実測: Tab を14回）。スクリーンリーダーの利用者も同じ。
   **見えないが最初にフォーカスが当たる**リンクを1本置く（WCAG 2.4.1）。
   隠し方は `display:none` ではなく画面の外へ——`none` だとフォーカスが当たらない */
.skip {
  position: absolute;
  left: var(--sp-gutter);
  top: 0;
  z-index: 100;
  transform: translateY(-140%);
  padding: 11px 18px;
  border-radius: 0 0 var(--sp-radius) var(--sp-radius);
  background: var(--sp-link);
  color: var(--sp-on-link);
  font-size: calc(14px * var(--sp-scale));
  font-weight: 700;
  transition: transform 0.15s var(--sp-ease);
}
.skip:focus { transform: translateY(0); }
@media (prefers-reduced-motion: reduce) { .skip { transition: none; } }
/* 飛び先に輪を出さない（`tabindex="-1"` を当てるために焦点は移すが、
   ページ全体が囲まれると何が起きたのか分からない） */
main:focus { outline: none; }

/* --- 上部に戻る ------------------------------------------------------------
   **トップページは 5,139px、スマホでは 10,583px ある**（実測）。
   帯は固定なので迷子にはならないが、**指で 10,000px 戻すのは現実的ではない**。

   置き場所は右下。ここは「進む」ではなく「戻る」ための場所で、
   親指の届く範囲（スマホ）／視線の外（PC）という順で選んでいる。
   **スクロールするまで出さない**——最初から出ていると、
   まだ下に行っていない人の画面を1つ塞ぐ */
.totop {
  position: fixed;
  right: max(var(--sp-gutter), env(safe-area-inset-right, 0px));
  bottom: calc(var(--sp-s5) + env(safe-area-inset-bottom, 0px));
  z-index: 40;
  display: grid;
  place-items: center;
  width: 44px; height: 44px;          /* 指の目安。24px では押し損ねる */
  border: 1px solid var(--sp-line-strong);
  border-radius: var(--sp-radius-pill);
  background: var(--sp-card);
  color: var(--sp-text);
  cursor: pointer;
  box-shadow: var(--sp-shadow-hover);
  /* 出ていないときは**押せない**（見えないボタンにフォーカスが当たらないように、
     visibility も切る。opacity だけだと Tab で拾われる） */
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity 0.2s var(--sp-ease), transform 0.2s var(--sp-ease),
              visibility 0s linear 0.2s;
}
.totop[data-on] {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition-delay: 0s;
}
.totop:hover { border-color: var(--sp-link); color: var(--sp-link); }
.totop__i { width: 18px; height: 18px; }
@media (prefers-reduced-motion: reduce) { .totop { transition: none; } }
/* 狭い幅ではもう少し大きく（指が太い人・揺れる電車の中） */
@media (max-width: 700px) { .totop { width: 48px; height: 48px; } }

/* --- 動きを減らす設定を尊重する ---------------------------------------------
   カードの浮き上がりと写真の色戻しは、前庭障害のある人には負担になる
   （既に輪の回転とスクロールは止めてあるが、こちらが残っていた） */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .card:hover { transform: none; }
  .dcard:hover { transform: none; }
}

/* --- 選択した文字 ----------------------------------------------------------
   既定のままだと OS の色が出て、明暗どちらかで読めなくなることがある */
::selection { background: var(--sp-blue-wash); color: var(--sp-ink); }

/* --- 印刷 ------------------------------------------------------------------
   **担当者は記事を紙で会議に持っていく。** 既定のままだと、固定の帯が
   1ページ目に焼き付き、紺のフッターがインクを大量に使う。
   デジタル・サステナビリティの観点でも、刷る枚数とインクは実物の資源 */
@media print {
  .head, .topics, .search, .menu, .stamp, .totop, .skip,
  .foot__cta, .foot__bcorp, .save, .sec__more, .latest__more { display: none !important; }
  html, body { background: #fff !important; color: #000 !important; }
  .foot { background: none !important; color: #000 !important; padding-block: 0 !important; }
  .foot a, .foot h3, .foot__about { color: #000 !important; }
  .sec--case { background: none !important; padding-block: var(--sp-s6) !important; }
  .sec--case .sec__ja, .ccard__t { color: #000 !important; }
  .ph { background: #eee !important; }
  .ph--tint::after { display: none !important; }
  /* 紙では行き先が分からなくなるので、本文のリンクだけURLを出す */
  .art__body a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 10pt; word-break: break-all; }
  /* 節・見出しを途中で割らない */
  h1, h2, h3 { break-after: avoid-page; }
  .sec { break-inside: avoid-page; margin-block: 16pt; }
}

/* 切替（明暗）の図形。文字の絵柄ではなく図形にしたので大きさを決める */
.sp-toggle__i { width: 15px; height: 15px; }

/* いま見ている節。**下線ではなく面**で示す
   （ホバーの下線と見分けが付かなくなるため） */
.nav a[aria-current] { background: var(--sp-blue-wash); color: var(--sp-link); }

/* 事例カードの題名は `<h3><a>…</a></h3>` の形。**行内のままだと箱が文字の
   高さになる**（820px で 575x19px ＝ 24px 未満。フッターの一覧と同じ話）。
   ブロックにすると行の高さを受け取り、押せる範囲も題名いっぱいに広がる */
.ccard__t a { display: block; }

/* --- 業界・キーワードから探す（2026-09-21）---------------------------------
   cehub.jp の「業界・分野から選ぶ」「注目キーワード」を参考にした。
   あちらは素のテキストリンクを縦に並べているが、**それだとサイトマップに見える**。
   データの絞り込み（`.finder`）と**同じ札**にして、
   「これは押して絞るもの」だと形で分かるようにする */
.browse {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: var(--sp-s8);
}
@media (max-width: 860px) {
  .browse { grid-template-columns: minmax(0, 1fr); gap: var(--sp-s7); }
}
/* キーワードが無い日は列が1つ。左の列の幅のまま右が空くので、全幅に広げる（2026-10-04 編集長のご指摘） */
.browse > .browse__col:only-child { grid-column: 1 / -1; }
/* トップのツール（2026-10-12 編集長のご依頼）。3つの大分類のタブ＋最大4本のカード（4列）。一覧の形の切り替えは効かせない */
.tkh__tabs { display: flex; flex-wrap: wrap; gap: 0 var(--sp-s5); border-bottom: 1px solid var(--sp-line-strong); margin-bottom: var(--sp-s5); }
.tkh__tab {
  display: inline-flex; align-items: baseline; flex-wrap: wrap; gap: 2px var(--sp-s2);
  padding: var(--sp-s3) 0; margin-bottom: -1px; min-height: 44px;
  font-family: inherit; font-size: calc(15px * var(--sp-scale)); font-weight: 700; color: var(--sp-text-soft);
  background: none; border: 0; border-bottom: 2px solid transparent; cursor: pointer;
}
.tkh__en { font-family: var(--sp-font-display); font-size: calc(12px * var(--sp-scale)); font-weight: 600; letter-spacing: -0.005em; }
.tkh__tab:hover { color: var(--sp-ink); }
.tkh__tab[aria-selected="true"] { color: var(--sp-ink); border-bottom-color: var(--sp-ink); }
/* スマホでは3つを1段の切り替え（2026-10-12 編集長のご指摘。折り返して3段に積まれ、どれが選ばれているか分かりにくかった）。英語は外し、日本語を「・」の後で2行に */
@media (max-width: 700px) {
  .tkh__tabs {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px;
    padding: 4px; border: 1px solid var(--sp-line-strong); border-radius: var(--sp-radius-lg); background: var(--sp-card);
  }
  .tkh__tab {
    justify-content: center; align-items: center; text-align: center; margin: 0; padding: 10px 4px; min-height: 52px;
    font-size: calc(13px * var(--sp-scale)); line-height: 1.4; border: 0; border-radius: var(--sp-radius);
    word-break: keep-all; /* 折るのは「・」の後（<wbr>）だけ */
  }
  .tkh__en { display: none; }
  .tkh__tab[aria-selected="true"] { background: var(--sp-ink); color: var(--sp-card); }
}
.tkh__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-s5); }
@media (min-width: 600px) { .tkh__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .tkh__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.tkh__more {
  display: block; margin-top: var(--sp-s4); text-align: right;
  font-size: calc(13px * var(--sp-scale)); font-weight: 700; color: var(--sp-link);
}
.tkh__more:hover { text-decoration: underline; }
/* 業界・キーワードの札は少し大きく・白い地に（2026-10-12 編集長のご指摘「文字を大きく、背景を白に」）。灰色の地の上で札が沈んでいた */
.browse .chip { font-size: calc(13px * var(--sp-scale)); padding: 7px 14px; background: var(--sp-card); }
.browse .chip:hover { background: var(--sp-blue-wash); }
.browse__h {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  font-weight: 400;
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-text-soft);
  margin: 0 0 var(--sp-s4);
  padding-bottom: var(--sp-s3);
  border-bottom: 1px solid var(--sp-line);
}
.browse__note {
  font-size: calc(12.5px * var(--sp-scale));
  line-height: 1.9;
  color: var(--sp-text-soft);
  margin: var(--sp-s4) 0 0;
  max-width: 34em;
}
/* キーワードは**等幅**にする。制度や基準の略語（SSBJ・CSRD・CBAM）が
   大半なので、等幅だと「記号の並び」として読み分けやすい。
   業界名は日本語の語なので、そちらは等幅にしない */
.chip--kw { font-family: var(--sp-font-mono); letter-spacing: 0.02em; }

/* --- 業界別の一覧ページ ----------------------------------------------------- */
/* 一覧の頭。**題名を1つだけ主役にする**（2026-09-23 編集長のご指摘「ダサい。洗練させて」）。
   札（THEME など）は題名の**上**に小さく1行。題名の下に2段目の見出しを置かない */
.ihead { padding-top: var(--sp-s8); padding-bottom: var(--sp-s6); }
.ihead__kicker, .ihead .dcrumb { margin: 0 0 var(--sp-s4); }
.ihead__kicker {
  font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label); text-transform: uppercase; color: var(--sp-link);
}
.ihead h1 {
  font-size: calc(40px * var(--sp-scale));
  font-weight: 700; line-height: 1.25; letter-spacing: -0.02em;
  color: var(--sp-ink); margin: 0;
}
/* 件数の段。**線は1本だけ**——前は見出しの下線と一覧の上の線が 40px 空けて2本並び、
   空の帯に見えた。この線から一覧がそのまま始まる */
.ibar {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between;
  gap: var(--sp-s2) var(--sp-s5);
  padding-bottom: var(--sp-s4);
  border-bottom: 1px solid var(--sp-ink);
}
.ibar p { margin: 0; }
.ibar__n { font-size: calc(14px * var(--sp-scale)); color: var(--sp-text); }
.ibar__n b {
  font-family: var(--sp-font-display); font-size: calc(20px * var(--sp-scale));
  color: var(--sp-ink); margin-right: 2px; font-variant-numeric: tabular-nums;
}
/* 日本語の文なので字間は詰める（ラベルの 0.1em だと字が散る） */
.ibar__p {
  font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  letter-spacing: 0.03em; color: var(--sp-text-soft); font-variant-numeric: tabular-nums;
}
.ibar + .irows li:first-child { border-top: 0; }
@media (max-width: 480px) {
  .ihead { padding-top: var(--sp-s6); }
  .ihead h1 { font-size: calc(30px * var(--sp-scale)); }
}
/* 説明文はカラムの幅いっぱいに（2026-10-11 編集長のご指摘。42em で止めていたので、題名より手前で折れていた） */
.ihead__lede {
  font-size: calc(15px * var(--sp-scale)); line-height: 1.95;
  color: var(--sp-text); margin: var(--sp-s4) 0 0;
}
/* **この一覧がいちばん効く場所。** 検索結果からは数値に移れない */
.ihead__data {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 2px var(--sp-s5);
  margin: var(--sp-s6) 0 var(--sp-s8);
  padding: var(--sp-s5) var(--sp-s6);
  background: var(--sp-soft);
  border-radius: var(--sp-radius-lg);
  transition: background 0.2s var(--sp-ease);
}
.ihead__data:hover { background: var(--sp-blue-wash); }
.ihead__data-l {
  grid-column: 1; font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label); color: var(--sp-link);
}
.ihead__data-t {
  grid-column: 1; font-size: calc(17px * var(--sp-scale));
  font-weight: 700; color: var(--sp-ink); line-height: 1.5;
}
.ihead__data-go { grid-row: 1 / 3; grid-column: 2; font-size: 20px; color: var(--sp-link); }

/* 記事の一覧。**写真を並べない。** 業界で絞って見る人は
   「何の話か」を早く読み比べたいので、題名と軸だけを縦に積む */
.irows { list-style: none; margin: 0; padding: 0; }
.irows li { border-top: 1px solid var(--sp-line); }
.irows li:last-child { border-bottom: 1px solid var(--sp-line); }
.irows a { display: block; padding: var(--sp-s5) 0; }
.irow__t {
  font-size: calc(17px * var(--sp-scale)); font-weight: 700; line-height: 1.6;
  color: var(--sp-ink); margin: var(--sp-s2) 0 0; max-width: 46em;
}
.irows a:hover .irow__t { color: var(--sp-link); }
.ikw { margin-top: var(--sp-s8); }

/* --- 一覧（カテゴリー・タグ・検索）：カードとリストの切り替え -------------------
   2026-09-23 編集長のご指示「カード形式をデフォルトにし、リスト切り替えもできるように。
   アイキャッチ付き」。**HTML は1つ**で、形は html の data-sp-view が決める
   （選んだ形は端末に覚えさせ、<head> の小さなスクリプトが描く前に付ける＝ちらつかない）。
   カードは記事カード（.card）と同じ面・同じ影。並びは **auto-fill**（1件の日に全幅へ伸びない） */
.ibody { padding-bottom: var(--sp-s9); }   /* **一覧の下で終わらせない**。ページ送り→フッターが詰まっていた */
.ilist {
  list-style: none; margin: var(--sp-s6) 0 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr));
  gap: var(--sp-s6) var(--sp-s5);
}
.ilist > li {
  background: var(--sp-card);
  border-radius: var(--sp-radius-lg);
  overflow: hidden;
  box-shadow: var(--sp-shadow);
  transition: transform 0.2s var(--sp-ease), box-shadow 0.2s var(--sp-ease);
}
.ilist > li:hover { transform: translateY(-3px); box-shadow: var(--sp-shadow-hover); }
.ilist a { display: flex; flex-direction: column; height: 100%; }
.ilist__thumb { aspect-ratio: 16 / 9; border-radius: 0; }
.ilist__body { padding: var(--sp-pad) var(--sp-pad) calc(var(--sp-pad) + 4px); }
.ilist .irow__t { font-size: var(--sp-fs-card); line-height: 1.65; margin-top: var(--sp-s3); }
.ilist a:hover .irow__t { color: var(--sp-link); }

/* リスト：面を外して罫線で区切る。写真は左に小さく残す（何の話かの手がかり） */
[data-sp-view="list"] .ilist { display: block; margin-top: 0; }
[data-sp-view="list"] .ilist > li {
  background: none; border-radius: 0; box-shadow: none; overflow: visible;
  border-bottom: 1px solid var(--sp-line);
}
[data-sp-view="list"] .ilist > li:hover { transform: none; box-shadow: none; }
[data-sp-view="list"] .ilist a {
  display: grid; grid-template-columns: 160px minmax(0, 1fr);
  gap: var(--sp-s5); align-items: start; padding: var(--sp-s5) 0;
}
[data-sp-view="list"] .ilist__thumb { border-radius: var(--sp-radius); }
[data-sp-view="list"] .ilist__body { padding: 0; }
@media (max-width: 480px) {
  [data-sp-view="list"] .ilist a { grid-template-columns: 96px minmax(0, 1fr); gap: var(--sp-s4); }
}

/* 形の切り替え。件数の段の右に置く（**何件あるか→どう並べるか**の順に読む） */
/* 段が折り返して次の行に落ちても、**切り替えは右端**（左に寄っていた。2026-10-05 編集長のご指摘）。
   右の組を残りの幅いっぱいに広げ、中身を右に寄せる */
.ibar__r { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; flex: 1 1 auto; gap: var(--sp-s2) var(--sp-s5); }
.vtog { display: inline-flex; padding: 2px; border: 1px solid var(--sp-line-strong); border-radius: var(--sp-radius-pill); }
.vtog__b {
  font: inherit; font-size: var(--sp-fs-meta); font-weight: 700;
  min-height: 30px; padding: 0 14px;
  color: var(--sp-text); background: transparent;
  border: 0; border-radius: var(--sp-radius-pill); cursor: pointer;
}
.vtog__b:hover { color: var(--sp-link); }
.vtog__b[aria-pressed="true"] { background: var(--sp-blue); color: var(--sp-on-dark); }


/* 一覧のパンくず。**業界別の一覧でも使う**ので、データのページ（data.css）から
   ここへ移した。data.css にだけあった頃、業界別の一覧では飾りが付いていなかった */
.dcrumb {
  font-family: var(--sp-font-mono);
  font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label);
  color: var(--sp-text-soft);
  margin: 0 0 var(--sp-s4);
}
.dcrumb a { color: var(--sp-link); display: inline-block; min-height: 24px; min-width: 24px; padding-block: 4px; }  /* 押し所 24px */

/* ページ送り（一覧の2ページ目以降）。**WordPress の paginate_links() が出す形**
   （.page-numbers / .current / .dots）に合わせてあるので、テーマはそのまま使える。
   押し所は 44px 角（指で押す幅）。いまいるページは押せないので面を塗って示す */
.pager { margin: var(--sp-s8) 0 0; }
.pager ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-s2); }
.pager .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; height: 44px; padding: 0 var(--sp-s4);
  font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  color: var(--sp-link); background: var(--sp-card);
  border-radius: var(--sp-radius);
}
.pager a.page-numbers:hover { background: var(--sp-blue-wash); }
.pager .current { background: var(--sp-blue); color: var(--sp-on-dark); }
.pager .dots { background: none; color: var(--sp-text-soft); }

/* --- イベント（2026-09-21）--------------------------------------------------
   **日付を左の柱に立てる。** イベントは「いつ」が先に要る情報で、
   題名を読んでから日付を探すのでは順番が逆になる。
   ニュースの一覧（写真＋題名）と形を変えてあるのは、**別の種類のもの**
   だと一目で分かるようにするため */
.ev {
  list-style: none; margin: 0;
  /* 記事カードと同じ白い面に載せる（罫線で区切る形は面の中でも使える） */
  background: var(--sp-card);
  border-radius: var(--sp-radius-lg);
  box-shadow: var(--sp-shadow);
  /* **上下にも余白を取る**（2026-09-23 編集長のご指摘「内部余白、特に上下」）。
     行の上下（--sp-pad）と足して、枠の端から最初の行まで 32px */
  padding: var(--sp-s2) var(--sp-pad);
}
.ev li + li { border-top: 1px solid var(--sp-line); }
/* **アイキャッチを出す**（2026-09-22 編集長のご指示）。
   イベントは「何をやるか」が絵で伝わる（会場の様子・登壇者・展示会）。
   並びは **日付 → 絵 → 中身**。日付が先なのは、イベントで最初に要る情報が
   「いつ」だから（記事の一覧とは順番が違う） */
.ev a {
  display: grid;
  grid-template-columns: 62px 160px minmax(0, 1fr);
  gap: var(--sp-s5);
  align-items: start;
  padding: var(--sp-pad) 0;
}
.ev__thumb {
  aspect-ratio: 16 / 9;
  max-width: 100%;
  border-radius: var(--sp-radius);
}
.ev__when {
  display: grid;
  place-items: center;
  padding: var(--sp-s3) 0;
  border-radius: var(--sp-radius);
  /* **面の中なので、白では見えない。** 地の色を借りる */
  background: var(--sp-bg);
  line-height: 1;
}
.ev__m {
  font-family: var(--sp-font-mono); font-size: var(--sp-fs-meta);
  letter-spacing: var(--sp-ls-label); color: var(--sp-link);
}
.ev__d {
  font-family: var(--sp-font-display); font-size: calc(24px * var(--sp-scale));
  font-weight: 700; color: var(--sp-ink); margin-top: 3px;
  font-variant-numeric: tabular-nums;
}
.ev__body { min-width: 0; }
.ev__t {
  font-size: calc(16px * var(--sp-scale)); font-weight: 700; line-height: 1.6;
  color: var(--sp-ink); margin: var(--sp-s2) 0 0; max-width: 44em;
}
.ev a:hover .ev__t { color: var(--sp-link); }
.ev a:hover .ev__when { background: var(--sp-blue-wash); }
@media (max-width: 720px) {
  /* 絵を小さくする（160px の柱が題名を圧迫する） */
  .ev a { grid-template-columns: 52px 104px minmax(0, 1fr); gap: var(--sp-s4); }
  .ev__d { font-size: calc(20px * var(--sp-scale)); }
}
@media (max-width: 480px) {
  /* **絵を下に落とさず、日付と絵を縦に積む。**
     3列のままだと題名が2文字ずつになる（実測）。
     日付と絵を1つの柱にまとめると、題名に幅が渡る */
  .ev a { grid-template-columns: 96px minmax(0, 1fr); gap: var(--sp-s4); }
  .ev__when { grid-column: 1; }
  .ev__thumb { grid-column: 1; margin-top: var(--sp-s3); }
  .ev__body { grid-column: 2; grid-row: 1 / 3; }
}


/* =========================================================================
   スマホの見直し（2026-10-05 編集長のご依頼「プロの UI/UX デザイナーの視点で全般に点検」）
   ========================================================================= */

/* --- 押したあとに色が残らないように -----------------------------------------
   指で押す端末では :hover が押したあとも残り、メニューのボタンが青い輪のままになった（編集長のスクリーンショット）。
   ホバーできる端末だけに効かせる */
@media (hover: none) {
  .icon-btn:hover { background: none; border-color: var(--sp-line-strong); color: inherit; }
  .sp-toggle:hover { border-color: var(--sp-line-strong); color: var(--sp-text); }
  .card:hover { transform: none; box-shadow: var(--sp-shadow); }
  .card:hover .card__t { color: var(--sp-ink); }
}
/* 開いているメニューのボタンは黒い面（× の図形と合わせて「閉じる」と分かる） */
.burger[aria-expanded="true"] { background: var(--sp-ink); border-color: var(--sp-ink); color: var(--sp-card); }

/* --- スマホの帯は1段だけ固定する（700px 以下）-----------------------------------
   帯（ロゴ・会員登録・メニュー）とテーマの帯の2段がずっと画面の上に残り、390px 幅で約116px（画面の14%）を使っていた。
   **固定するのは上の段だけ**にし、テーマの帯は本文と一緒に流す。
   メニューと検索は帯のすぐ下に重ねて出し（position: fixed）、中だけスクロールさせる。
   帯の高さは theme.js が --sp-bar-h に入れる */
@media (max-width: 700px) {
  .head { display: contents; }
  .head__bar { position: sticky; top: 0; z-index: 50; }
  .menu, .search {
    position: fixed; left: 0; right: 0; top: var(--sp-bar-h, 53px); z-index: 49;
    max-height: calc(100dvh - var(--sp-bar-h, 53px)); overflow-y: auto; overscroll-behavior: contain;
    box-shadow: 0 16px 32px rgba(0, 0, 0, 0.12);
  }
  /* メニューを開いている間は、後ろのページを動かさない */
  html:has(#spMenu:not([hidden])) { overflow: hidden; }
  /* 固定しているのが帯1段になったので、節へ飛んだときの余白も詰める */
  [id] { scroll-margin-top: 72px; }
}

/* --- 新着の一覧は、札1つと日時だけ（600px 以下）---------------------------------
   札2つ・地域・日時が2行に分かれて、題名より先に目に入っていた */
@media (max-width: 600px) {
  .latest .meta > :not(:first-child):not(:last-child) { display: none; }
}

/* --- 一覧の形は「カード」か「リスト」の2つだけ（2026-10-05 編集長のご依頼）------------------------
   スマホのトップで、新着は小さい写真の行・コラムは先頭だけ大きいカード・残りは白い箱の行、と3通り混ざっていた。
   **形は読む人が選ぶ**（html の data-sp-view。一覧のページと同じ切り替え。どこで押してもサイト全体で揃う）。
   リストの行は、一覧のページ（.ilist）・トップの写真のカード（.cards）・スマホの新着（.latest）で**同じ寸法**にする */
.sec__tools { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-s2) var(--sp-s5); }
.vtog--sm .vtog__b { min-height: 28px; padding: 0 12px; }
.latest__top {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-s3);
  padding-bottom: var(--sp-s3); border-bottom: 1px solid var(--sp-line-strong);
}
.latest__top .latest__h { padding-bottom: 0; border-bottom: 0; }
.vtog--narrow { display: none; }

/* リスト：写真のカードも面を外して罫線で区切る（一覧のページのリストと同じ） */
[data-sp-view="list"] .cards { display: block; }
[data-sp-view="list"] .cards > .card {
  background: none; border-radius: 0; box-shadow: none; overflow: visible;
  border-bottom: 1px solid var(--sp-line);
}
[data-sp-view="list"] .cards > .card:hover { transform: none; box-shadow: none; }
[data-sp-view="list"] .cards .card__link {
  display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: var(--sp-s5); align-items: start; padding: var(--sp-s5) 0;
}
[data-sp-view="list"] .cards .card__thumb { border-radius: var(--sp-radius); }
[data-sp-view="list"] .cards .card__body { padding: 0 44px 0 0; }
[data-sp-view="list"] .cards .card__t { margin-top: var(--sp-s2); }
[data-sp-view="list"] .cards .save { top: var(--sp-s5); right: 0; }

@media (max-width: 600px) {
  .vtog--narrow { display: inline-flex; }
  /* カード：新着も写真を上に大きく（コラム・インタビューのカードと同じ形） */
  html:not([data-sp-view="list"]) .latest li > a { grid-template-columns: minmax(0, 1fr); gap: var(--sp-s3); }
  html:not([data-sp-view="list"]) .latest__thumb { aspect-ratio: 16 / 9; width: 100%; }
  html:not([data-sp-view="list"]) .latest__title { font-size: var(--sp-fs-card); }
  /* カードの形では写真が上に来るので、ボタンは写真の右上に（コラム・インタビューのカードと同じ） */
  html:not([data-sp-view="list"]) .latest li > .save { top: calc(var(--sp-s4) + var(--sp-s2)); right: var(--sp-s2); }
  html:not([data-sp-view="list"]) .latest li > a > div { padding-right: 0; }
  /* リスト：3か所とも 96px・4:3 の写真＋15px の題名 */
  [data-sp-view="list"] .latest li > a,
  [data-sp-view="list"] .cards .card__link,
  [data-sp-view="list"] .ilist a { grid-template-columns: 96px minmax(0, 1fr); gap: var(--sp-s4); }
  [data-sp-view="list"] .latest__thumb,
  [data-sp-view="list"] .cards .card__thumb,
  [data-sp-view="list"] .ilist__thumb { aspect-ratio: 4 / 3; width: 100%; height: auto; object-fit: cover; border-radius: var(--sp-radius); }
  [data-sp-view="list"] .latest__title,
  [data-sp-view="list"] .cards .card__t,
  [data-sp-view="list"] .ilist .irow__t { font-size: calc(15px * var(--sp-scale)); line-height: 1.6; }
}

/* --- フッターの目次は、押して開く（600px 以下）-----------------------------------
   目次・テーマ・Springl について・姉妹媒体の4つが縦に全部並び、フッターだけで3画面ほどあった。
   スマホでは見出しだけ並べて、押すと開く（details。JS が無ければ全部開いたまま） */
.fcol > summary { list-style: none; cursor: default; }
.fcol > summary::-webkit-details-marker { display: none; }
@media (min-width: 601px) {
  .fcol > summary { pointer-events: none; }   /* 広い幅では見出しのまま（閉じさせない） */
}
@media (max-width: 600px) {
  .foot__grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .foot__brand { padding-bottom: var(--sp-s5); }
  .foot__bcorp img { width: 48px; height: auto; }
  .fcol { border-top: 1px solid rgba(255, 255, 255, 0.14); }
  .fcol:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.14); }
  .fcol > summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; min-height: 52px; }
  .fcol > summary h3 { margin: 0; }
  .fcol > summary::after {
    content: ""; width: 8px; height: 8px; margin-right: 4px;
    border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg); transition: transform 0.2s var(--sp-ease);
  }
  .fcol[open] > summary::after { transform: rotate(-135deg); }
  .fcol > ul { padding-bottom: var(--sp-s4); }
}
