/* =========================================================
   やめどき研究所 — 共通スタイル (light DS)
   tokens: shibuya-ekimae-mental DS / Zen Maru Gothic
   ========================================================= */
:root{
  --bg:#FFFFFF;
  --surface:#FFFFFF;
  --surface-2:#F6F3EE;
  --on:#2B2622;
  --on-sub:#5C564E;
  --on-meta:#928B80;
  --accent:#B8A380;
  --accent-ink:#7A5F33;
  --accent-soft:rgba(184,163,128,.14);
  --accent-line:rgba(184,163,128,.5);
  --line:#E7E2D8;
  --line-soft:rgba(0,0,0,.07);
  --green:#06C755;

  --r-sm:4px; --r-md:8px; --r-full:9999px;

  --s-xs:6px; --s-sm:14px; --s-md:24px; --s-lg:36px; --s-xl:50px;
  --s-section:88px;

  --font-disp:"Zen Maru Gothic","Hiragino Sans","Yu Gothic",sans-serif;
  --font-body:"游ゴシック Medium","Yu Gothic Medium",YuGothic,"Yu Gothic","ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
  --maxw:1080px;
}

*{box-sizing:border-box;}
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--on);
  background:var(--bg);
  font-size:16px;
  line-height:1.8;
  letter-spacing:.01em;
  line-break:strict;
  word-break:normal;
  overflow-wrap:anywhere;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{ font-family:var(--font-disp); margin:0; font-feature-settings:"palt"; }
a{ color:inherit; text-decoration:none; }
img,svg{ display:block; max-width:100%; }
p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
sup{ font-size:.6em; }
::selection{ background:var(--accent); color:#fff; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 var(--s-md); }
.wrap-narrow{ max-width:760px; margin:0 auto; padding:0 var(--s-md); }

/* ===== Buttons ===== */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--font-body); font-size:16px; font-weight:500; letter-spacing:.02em;
  border-radius:var(--r-sm); padding:13px 26px; min-height:46px; white-space:nowrap;
  cursor:pointer; border:1px solid transparent; transition:transform .15s ease, background-color .15s ease, border-color .15s ease, color .15s ease; }
.btn-primary{ background:var(--on); color:#fff; }
.btn-primary:hover{ background:#3a342e; transform:translateY(-1px); }
.btn-line{ background:var(--green); color:#fff; }
.btn-line:hover{ transform:translateY(-1px); background:#05b54e; }
.btn-line.sm{ min-height:38px; padding:8px 18px; font-size:14px; }
.btn-outline{ background:transparent; color:var(--on); border:1px solid var(--line); }
.btn-outline:hover{ border-color:var(--accent); color:var(--accent-ink); }
.btn.block{ width:100%; }
.line-icon{ width:20px; height:20px; flex:none; }
.line-icon.sm{ width:17px; height:17px; }

/* ===== Chips / kicker ===== */
.chip{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--accent-line);
  color:var(--accent-ink); background:var(--accent-soft); border-radius:var(--r-full);
  padding:7px 16px; font-size:13.5px; font-weight:500; letter-spacing:.02em; }
.chip .dot{ width:6px; height:6px; border-radius:50%; background:var(--accent); }
.section-kicker{ display:inline-block; color:var(--accent-ink); font-size:12.5px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase; }

/* category tag (per category color via --cat) */
.cat-tag{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:500;
  letter-spacing:.02em; padding:4px 11px; border-radius:var(--r-full);
  color:var(--accent-ink); background:var(--accent-soft); border:1px solid var(--accent-line); }
.cat-tag .swatch{ width:7px; height:7px; border-radius:50%; background:var(--accent); }

/* ===== Header ===== */
.site-header{ position:sticky; top:0; z-index:50; background:rgba(255,255,255,.88);
  backdrop-filter:saturate(1.1) blur(8px); border-bottom:1px solid var(--line); }
.header-inner{ display:flex; align-items:center; gap:var(--s-md); height:70px; }
.brand{ display:flex; align-items:center; gap:11px; margin-right:auto; }
.brand-mark{ width:36px; height:36px; border-radius:var(--r-md); background:var(--accent);
  display:grid; place-items:center; color:#fff; font-weight:700; font-size:1.1rem; font-family:var(--font-disp); }
.brand-name{ font-family:var(--font-disp); font-weight:700; font-size:1.0625rem; letter-spacing:.04em; line-height:1.2; color:var(--on); }
.brand-sub{ font-size:.6875rem; color:var(--on-meta); letter-spacing:.06em; line-height:1.2; }
.nav{ display:flex; align-items:center; gap:var(--s-md); }
.nav a{ font-size:.9375rem; font-weight:500; color:var(--on-sub); }
.nav a:hover, .nav a[aria-current]{ color:var(--accent-ink); }
.header-cta{ margin-left:var(--s-xs); }
.menu-btn{ display:none; color:var(--on); background:transparent; border:1px solid var(--line);
  border-radius:var(--r-sm); width:42px; height:42px; place-items:center; }

/* ===== Breadcrumb ===== */
.breadcrumb{ padding:var(--s-md) 0 0; }
.breadcrumb ol{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:12.5px; color:var(--on-meta); }
.breadcrumb li{ display:flex; align-items:center; gap:8px; }
.breadcrumb a:hover{ color:var(--accent-ink); }
.breadcrumb .sep{ color:var(--line); }
.breadcrumb [aria-current]{ color:var(--on-sub); }

/* ===== Page head ===== */
.page-head{ padding:var(--s-xl) 0 var(--s-lg); border-bottom:1px solid var(--line); }
.page-head h1{ font-size:clamp(24px,3.4vw,32px); font-weight:700; line-height:1.45; letter-spacing:.03em; color:var(--on); margin-top:10px; }
.page-head .lead{ color:var(--on-sub); font-size:15.5px; margin-top:var(--s-sm); max-width:42em; }

/* ===== Layout: content + sidebar ===== */
.layout{ display:grid; grid-template-columns:1fr 312px; gap:var(--s-xl); padding:var(--s-xl) 0 var(--s-section); align-items:start; }
.layout.reverse{ grid-template-columns:312px 1fr; }

/* ===== Article cards (list) ===== */
.post-list{ display:grid; gap:var(--s-md); }
.post-card{ display:grid; grid-template-columns:240px 1fr; gap:var(--s-md); background:var(--surface);
  border:1px solid var(--line); border-radius:var(--r-md); overflow:hidden; transition:border-color .15s ease, transform .15s ease; }
.post-card:hover{ border-color:var(--accent-line); transform:translateY(-2px); }
.post-card .thumb{ aspect-ratio:4/3; border-right:1px solid var(--line); overflow:hidden; }
.post-card .thumb img{ width:100%; height:100%; object-fit:cover; }
.post-card .body{ padding:var(--s-md) var(--s-md) var(--s-md) 0; display:flex; flex-direction:column; gap:8px; }
.post-card .body{ padding:var(--s-md); }
.post-card h3{ font-size:1.125rem; font-weight:700; line-height:1.55; color:var(--on); letter-spacing:.02em; }
.post-card .excerpt{ font-size:13.5px; color:var(--on-sub); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.post-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; font-size:12px; color:var(--on-meta); margin-top:auto; }
.post-meta .by{ display:inline-flex; align-items:center; gap:6px; }
.post-meta .avatar{ width:20px; height:20px; border-radius:var(--r-full); object-fit:cover; flex:none; }

/* compact card (grid 3up) */
.post-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:var(--s-md); }
.post-grid .post-card{ grid-template-columns:1fr; }
.post-grid .post-card .thumb{ aspect-ratio:16/10; border-right:none; border-bottom:1px solid var(--line); }

/* ===== Sidebar ===== */
.sidebar{ display:grid; gap:var(--s-md); position:sticky; top:90px; }
.widget{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); padding:var(--s-md); }
.widget h4{ font-family:var(--font-disp); font-size:.9375rem; font-weight:700; color:var(--on); letter-spacing:.04em;
  padding-bottom:var(--s-sm); margin-bottom:var(--s-sm); border-bottom:1px solid var(--line); }
.widget-cta{ background:var(--surface-2); border-color:var(--accent-line); text-align:center; }
.widget-cta .k{ font-size:12px; color:var(--accent-ink); letter-spacing:.1em; font-weight:500; }
.widget-cta p{ font-size:13.5px; color:var(--on-sub); margin:8px 0 var(--s-md); }
.cat-links li+li, .tag-links li+li{ margin-top:2px; }
.cat-links a{ display:flex; align-items:center; gap:10px; padding:8px 6px; border-radius:var(--r-sm); font-size:14px; color:var(--on-sub); }
.cat-links a:hover{ background:var(--surface-2); color:var(--accent-ink); }
.cat-links .swatch{ width:9px; height:9px; border-radius:50%; flex:none; }
.cat-links .count{ margin-left:auto; font-size:12px; color:var(--on-meta); }
.tag-cloud{ display:flex; flex-wrap:wrap; gap:8px; }
.tag-cloud a{ font-size:12.5px; color:var(--on-sub); border:1px solid var(--line); border-radius:var(--r-full); padding:5px 12px; }
.tag-cloud a:hover{ border-color:var(--accent-line); color:var(--accent-ink); }
.mini-list li+li{ margin-top:var(--s-sm); padding-top:var(--s-sm); border-top:1px solid var(--line); }
.mini-list a{ display:flex; gap:10px; align-items:flex-start; }
.mini-list .mini-thumb{ width:56px; height:56px; border-radius:var(--r-sm); object-fit:cover; flex:none; border:1px solid var(--line); }
.mini-list .mini-ttl{ font-size:13px; line-height:1.5; color:var(--on); }
.mini-list .mini-meta{ font-size:11px; color:var(--on-meta); margin-top:3px; }
.mini-list a:hover .mini-ttl{ color:var(--accent-ink); }

/* ===== Pagination ===== */
.pagination{ display:flex; justify-content:center; align-items:center; gap:6px; margin-top:var(--s-xl); }
.pagination a, .pagination span{ min-width:42px; height:42px; display:inline-grid; place-items:center; padding:0 12px;
  border:1px solid var(--line); border-radius:var(--r-sm); font-size:14px; color:var(--on-sub); }
.pagination a:hover{ border-color:var(--accent-line); color:var(--accent-ink); }
.pagination .current{ background:var(--on); color:#fff; border-color:var(--on); }
.pagination .dots{ border:none; }

/* ===== Category header (archive) ===== */
.archive-hero{ background:var(--surface-2); border-bottom:1px solid var(--line); }
.archive-hero .inner{ padding:var(--s-xl) 0; display:flex; gap:var(--s-md); align-items:flex-start; }
.archive-icon{ width:64px; height:64px; border-radius:var(--r-md); display:grid; place-items:center; flex:none;
  background:var(--accent-soft); border:1px solid var(--accent-line); color:var(--accent-ink); }
.archive-hero h1{ font-size:clamp(24px,3.4vw,30px); font-weight:700; letter-spacing:.03em; color:var(--on); }
.archive-hero .desc{ color:var(--on-sub); font-size:15px; margin-top:8px; max-width:44em; }
.archive-hero .count{ font-size:12.5px; color:var(--on-meta); margin-top:10px; }

/* category index grid */
.cat-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:var(--s-md); }
.cat-card{ display:flex; flex-direction:column; gap:10px; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-md); padding:var(--s-md); transition:border-color .15s ease, transform .15s ease; }
.cat-card:hover{ border-color:var(--accent-line); transform:translateY(-2px); }
.cat-card .ico{ width:46px; height:46px; border-radius:var(--r-md); display:grid; place-items:center;
  background:var(--accent-soft); border:1px solid var(--accent-line); color:var(--accent-ink); }
.cat-card h3{ font-size:1.0625rem; font-weight:700; color:var(--on); letter-spacing:.02em; }
.cat-card p{ font-size:13px; color:var(--on-sub); }
.cat-card .meta{ margin-top:auto; padding-top:6px; font-size:12px; color:var(--on-meta); display:flex; align-items:center; gap:8px; }
.cat-card .arr{ color:var(--accent-ink); }

/* ===== Author ===== */
.author-hero{ background:var(--surface-2); border-bottom:1px solid var(--line); }
.author-hero .inner{ padding:var(--s-xl) 0; display:flex; gap:var(--s-lg); align-items:center; }
.author-avatar{ width:104px; height:104px; border-radius:var(--r-full); object-fit:cover; flex:none; border:1px solid var(--line); }
.author-avatar.ph{ border-radius:var(--r-full); }
.author-role{ font-size:12.5px; font-weight:500; color:var(--accent-ink); letter-spacing:.1em; }
.author-hero h1{ font-size:clamp(22px,3vw,28px); font-weight:700; letter-spacing:.03em; color:var(--on); margin-top:4px; }
.author-hero h1 .lic{ font-family:var(--font-body); font-size:13px; font-weight:400; color:var(--on-sub); margin-left:10px; }
.author-bio{ color:var(--on-sub); font-size:14.5px; margin-top:10px; max-width:46em; }
.author-stats{ display:flex; gap:var(--s-lg); margin-top:var(--s-md); }
.author-stats .num{ font-family:var(--font-disp); font-size:1.25rem; font-weight:700; color:var(--accent-ink); }
.author-stats .lbl{ font-size:12px; color:var(--on-meta); }
.author-links{ display:flex; gap:var(--s-sm); margin-top:var(--s-md); flex-wrap:wrap; }
.author-links a{ font-size:13px; color:var(--on-sub); border:1px solid var(--line); border-radius:var(--r-full); padding:6px 14px; }
.author-links a:hover{ border-color:var(--accent-line); color:var(--accent-ink); }

/* author index list */
.author-cards{ display:grid; grid-template-columns:1fr 1fr; gap:var(--s-md); }
.author-card{ display:flex; gap:var(--s-md); background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-md); padding:var(--s-md); transition:border-color .15s ease, transform .15s ease; }
.author-card:hover{ border-color:var(--accent-line); transform:translateY(-2px); }
.author-card .av{ width:72px; height:72px; border-radius:var(--r-full); object-fit:cover; flex:none; border:1px solid var(--line); }
.author-card .av.ph{ border-radius:var(--r-full); }
.author-card .role{ font-size:11.5px; color:var(--accent-ink); letter-spacing:.08em; font-weight:500; }
.author-card h3{ font-size:1.0625rem; font-weight:700; color:var(--on); margin-top:2px; letter-spacing:.02em; }
.author-card p{ font-size:12.5px; color:var(--on-sub); margin-top:6px; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.author-card .n{ font-size:11.5px; color:var(--on-meta); margin-top:8px; }

/* ===== Single article ===== */
.article-head{ padding:var(--s-lg) 0 var(--s-md); }
.article-head .cats{ display:flex; gap:8px; flex-wrap:wrap; }
.article-head h1{ font-size:clamp(25px,3.6vw,34px); font-weight:700; line-height:1.5; letter-spacing:.03em; color:var(--on); margin-top:var(--s-sm); }
.article-byline{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--s-md); margin-top:var(--s-md);
  padding:var(--s-sm) 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); font-size:13px; color:var(--on-meta); }
.article-byline .who{ display:flex; align-items:center; gap:10px; }
.article-byline .avatar{ width:38px; height:38px; border-radius:var(--r-full); object-fit:cover; flex:none; border:1px solid var(--line); }
.article-byline .who .nm{ font-size:13.5px; color:var(--on); font-weight:500; }
.article-byline .who .rl{ font-size:11.5px; color:var(--accent-ink); }
.article-byline .dates{ display:flex; gap:var(--s-md); margin-left:auto; }
.article-hero-img{ border-radius:var(--r-md); overflow:hidden; border:1px solid var(--line); margin:var(--s-md) 0 var(--s-lg); aspect-ratio:16/8; }
.article-hero-img img{ width:100%; height:100%; object-fit:cover; }

/* TOC */
.toc{ background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-md); padding:var(--s-md) var(--s-md); margin:0 0 var(--s-lg); }
.toc .toc-ttl{ font-family:var(--font-disp); font-size:14px; font-weight:700; color:var(--on); display:flex; align-items:center; gap:8px; }
.toc ol{ counter-reset:toc; margin-top:var(--s-sm); display:grid; gap:8px; }
.toc li{ counter-increment:toc; font-size:14px; }
.toc > ol > li > a::before{ content:counter(toc) ". "; color:var(--accent-ink); font-weight:500; }
.toc a{ color:var(--on-sub); }
.toc a:hover{ color:var(--accent-ink); }
.toc ol ol{ margin:6px 0 0 1.2em; }
.toc ol ol li::before{ content:"– "; color:var(--on-meta); }
.toc ol ol a{ font-size:13px; }

/* Prose */
.prose{ font-size:16px; line-height:1.95; color:var(--on); letter-spacing:.02em; }
.prose > * + *{ margin-top:var(--s-md); }
.prose h2{ font-size:1.4rem; font-weight:700; letter-spacing:.03em; line-height:1.5; margin-top:var(--s-xl);
  padding-bottom:10px; border-bottom:2px solid var(--accent-line); scroll-margin-top:90px; }
.prose h3{ font-size:1.15rem; font-weight:700; letter-spacing:.03em; margin-top:var(--s-lg);
  padding-left:12px; border-left:4px solid var(--accent); scroll-margin-top:90px; }
.prose p{ color:var(--on-sub); }
.prose strong{ color:var(--on); font-weight:700; background:linear-gradient(transparent 62%, var(--accent-soft) 62%); }
.prose a.inline{ color:var(--accent-ink); text-decoration:underline; text-underline-offset:3px; text-decoration-color:var(--accent-line); }
.prose ul.bul, .prose ol.num{ display:grid; gap:10px; padding-left:0; }
.prose ul.bul li{ position:relative; padding-left:1.6em; color:var(--on-sub); }
.prose ul.bul li::before{ content:""; position:absolute; left:.2em; top:.7em; width:8px; height:8px; border-radius:50%; background:var(--accent); }
.prose ol.num{ counter-reset:n; display:grid; gap:0; padding-left:0; }
.prose ol.num li{ position:relative; padding:0 0 var(--s-md) calc(34px + var(--s-md)); color:var(--on-sub); counter-increment:n; }
.prose ol.num li::before{ content:counter(n); position:absolute; left:0; top:-2px; width:34px; height:34px;
  background:var(--accent-soft); color:var(--accent-ink); border:1px solid var(--accent-line); border-radius:var(--r-full);
  display:grid; place-items:center; font-family:var(--font-disp); font-size:.9em; font-weight:700; z-index:1; }
.prose ol.num li::after{ content:""; position:absolute; left:17px; top:34px; bottom:-2px; width:2px;
  background:var(--accent-line); }
.prose ol.num li:last-child{ padding-bottom:0; }
.prose ol.num li:last-child::after{ display:none; }
.prose ol.num li strong{ display:block; margin-bottom:2px; background:none; }

/* callout / note / source */
.callout{ background:var(--surface-2); border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:var(--r-md); padding:var(--s-md); }
.callout .c-ttl{ font-family:var(--font-disp); font-weight:700; font-size:15px; color:var(--on); display:flex; align-items:center; gap:8px; }
.callout p{ font-size:14px; margin-top:8px; }
.source-box{ background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-md); padding:var(--s-md); font-size:12.5px; color:var(--on-sub); }
.source-box .s-ttl{ font-weight:700; color:var(--on); font-family:var(--font-disp); font-size:13px; margin-bottom:8px; }
.source-box li{ padding-left:1.2em; text-indent:-1.2em; line-height:1.7; }
.source-box a{ color:var(--accent-ink); text-decoration:underline; text-underline-offset:2px; }

/* figure */
.prose figure{ margin:var(--s-md) 0; }
.prose figure img{ width:100%; border-radius:var(--r-md); border:1px solid var(--line); }
.prose figcaption{ font-size:12px; color:var(--on-meta); margin-top:8px; text-align:center; }

/* comparison table */
.tbl-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--r-md); }
table.cmp{ width:100%; border-collapse:collapse; font-size:14px; min-width:440px; }
table.cmp th, table.cmp td{ padding:12px 16px; text-align:left; border-bottom:1px solid var(--line); }
table.cmp thead th{ background:var(--surface-2); font-family:var(--font-disp); font-weight:700; color:var(--on); }
table.cmp tbody th{ font-weight:500; color:var(--on); background:rgba(184,163,128,.06); white-space:nowrap; }
table.cmp tr:last-child td, table.cmp tr:last-child th{ border-bottom:none; }
table.cmp .em{ color:var(--accent-ink); font-weight:700; }

/* inline article CTA */
.article-cta{ background:var(--surface-2); border:1px solid var(--accent-line); border-radius:var(--r-md);
  padding:var(--s-lg) var(--s-md); text-align:center; margin:var(--s-xl) 0; }
.article-cta h3{ font-size:1.2rem; font-weight:700; color:var(--on); letter-spacing:.03em; }
.article-cta p{ font-size:14px; color:var(--on-sub); margin:10px auto 0; max-width:34em; }
.article-cta .acts{ display:flex; justify-content:center; gap:var(--s-sm); margin-top:var(--s-md); flex-wrap:wrap; }

/* supervisor box (reused) */
.supervisor-box{ background:var(--surface); border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:var(--r-md); padding:var(--s-md) var(--s-lg); display:flex; gap:var(--s-md); align-items:flex-start; margin-top:var(--s-xl); }
.sv-photo{ width:84px; height:84px; border-radius:var(--r-full); flex:none; aspect-ratio:1; object-fit:cover; }
.sv-photo.ph{ border-radius:var(--r-full); }
.sv-title{ font-size:12.5px; font-weight:500; color:var(--accent-ink); letter-spacing:.1em; }
.sv-name{ font-family:var(--font-disp); font-size:1.1875rem; font-weight:700; margin-top:4px; color:var(--on); letter-spacing:.03em; }
.sv-name .lic{ font-family:var(--font-body); font-size:12.5px; font-weight:400; color:var(--on-sub); margin-left:8px; }
.sv-bio{ font-size:14px; color:var(--on-sub); margin-top:8px; }
.sv-link{ display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:500; color:var(--accent-ink); margin-top:10px; }

/* share + tags row */
.article-foot{ margin-top:var(--s-lg); padding-top:var(--s-md); border-top:1px solid var(--line);
  display:flex; flex-wrap:wrap; gap:var(--s-md); align-items:center; justify-content:space-between; }
.article-tags{ display:flex; flex-wrap:wrap; gap:8px; }
.article-tags a{ font-size:12.5px; color:var(--on-sub); background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-full); padding:5px 13px; }
.article-tags a:hover{ border-color:var(--accent-line); color:var(--accent-ink); }
.share{ display:flex; gap:8px; }
.share a{ width:38px; height:38px; border:1px solid var(--line); border-radius:var(--r-sm); display:grid; place-items:center; color:var(--on-sub); }
.share a:hover{ border-color:var(--accent-line); color:var(--accent-ink); }

/* related */
.related{ background:var(--surface-2); border-top:1px solid var(--line); }
.related .inner{ padding:var(--s-xl) 0; }
.related h2{ font-size:1.25rem; font-weight:700; letter-spacing:.03em; color:var(--on); text-align:center; margin-bottom:var(--s-md); }

/* ===== Footer ===== */
.site-footer{ background:var(--bg); border-top:1px solid var(--line); margin-top:0; }
.footer-top{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:var(--s-lg); padding:var(--s-xl) 0 var(--s-lg); }
.footer-brand .footer-about{ font-size:12.5px; color:var(--on-sub); margin-top:var(--s-sm); max-width:26em; }
.footer-col h4{ font-family:var(--font-disp); font-size:.875rem; font-weight:700; color:var(--on); letter-spacing:.06em; margin:0 0 var(--s-sm); }
.footer-col li+li{ margin-top:10px; }
.footer-col a{ font-size:14px; color:var(--on-sub); }
.footer-col a:hover{ color:var(--accent-ink); }
.company{ border-top:1px solid var(--line-soft); padding:var(--s-md) 0; }
.company h4{ font-family:var(--font-disp); font-size:.9375rem; color:var(--on); font-weight:700; margin:0 0 var(--s-sm); letter-spacing:.04em; }
.company dl{ display:grid; grid-template-columns:auto 1fr; gap:7px var(--s-md); font-size:12.5px; color:var(--on-sub); margin:0; max-width:52em; }
.company dt{ color:var(--on-meta); white-space:nowrap; }
.company dd{ margin:0; }
.company dd a{ color:var(--on-sub); }
.disclosure{ font-size:11.5px; color:var(--on-meta); border-top:1px solid var(--line-soft); padding:var(--s-md) 0; line-height:1.8; }
.footer-bottom{ border-top:1px solid var(--line-soft); padding:var(--s-md) 0 var(--s-xl);
  display:flex; flex-wrap:wrap; gap:var(--s-sm); align-items:center; justify-content:space-between; }
.footer-legal{ display:flex; flex-wrap:wrap; gap:var(--s-md); }
.footer-legal a{ font-size:12.5px; color:var(--on-sub); }
.footer-legal a:hover{ color:var(--accent-ink); }
.copyright{ font-size:12px; color:var(--on-meta); }

/* ===== Placeholder ===== */
.ph{ position:relative; border:1px solid var(--line); overflow:hidden;
  background:repeating-linear-gradient(135deg, #fff 0 14px, var(--surface-2) 14px 28px);
  display:grid; place-items:center; }
.ph span{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.7rem;
  color:var(--on-meta); background:rgba(255,255,255,.82); padding:5px 10px; border-radius:var(--r-sm); }

/* ===== Responsive ===== */
@media (max-width:980px){
  .layout, .layout.reverse{ grid-template-columns:1fr; gap:var(--s-lg); }
  .sidebar{ position:static; grid-template-columns:1fr 1fr; }
  .widget-cta{ grid-column:1 / -1; }
  .cat-cards{ grid-template-columns:1fr 1fr; }
  .post-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:760px){
  .nav, .header-cta{ display:none; }
  .menu-btn{ display:inline-grid; margin-left:auto; }
  .post-card{ grid-template-columns:120px 1fr; }
  .post-card .thumb{ aspect-ratio:1; }
  .post-card h3{ font-size:1rem; }
  .post-grid{ grid-template-columns:1fr; }
  .cat-cards{ grid-template-columns:1fr; }
  .author-cards{ grid-template-columns:1fr; }
  .sidebar{ grid-template-columns:1fr; }
  .archive-hero .inner, .author-hero .inner{ flex-direction:column; gap:var(--s-md); text-align:left; }
  .article-byline .dates{ margin-left:0; width:100%; }
  .footer-top{ grid-template-columns:1fr 1fr; gap:var(--s-md); }
  .footer-brand{ grid-column:1 / -1; }
}

/* ===== mobile overflow guard (grid track min-width:0) ===== */
.layout > main{ min-width:0; }
.post-list{ min-width:0; }
.post-card{ min-width:0; }
.post-card .body{ min-width:0; }
.post-card h3, .post-card h3 a, .post-card .excerpt{ overflow-wrap:anywhere; }
.post-grid .post-card .body{ min-width:0; }
.cat-card{ min-width:0; }
.breadcrumb ol li span[aria-current]{ overflow-wrap:normal; }


.mini-list a img, .mini-list img.wpp-thumbnail{ width:56px; height:56px; border-radius:var(--r-sm); object-fit:cover; flex:none; border:1px solid var(--line); }

/* ===== 狭幅 横溢れ 最終ガード ===== */
html, body{ overflow-x: clip; }                 /* sticky を壊さない安全弁 */
.layout > main, .layout > aside, .sidebar{ min-width: 0; }
.prose, .article-body, .widget, .post-card .body{ min-width: 0; }
.prose img, .prose table, .prose iframe, .prose pre, .prose video{ max-width: 100%; }
.prose table{ display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.prose pre{ white-space: pre-wrap; word-break: break-word; }
.mini-list a{ min-width: 0; }
.mini-ttl, .prose h2, .prose h3, .prose li, .prose p{ overflow-wrap: anywhere; }

/* ===== モバイル ハンバーガードロワー ===== */
@media (max-width:760px){
  .site-header{ position:relative; }
  .site-header.nav-open .nav{
    display:flex; flex-direction:column; align-items:stretch; gap:0;
    position:absolute; left:0; right:0; top:70px;
    background:var(--bg,#fff); border-top:1px solid var(--line,#e7e2d8);
    border-bottom:1px solid var(--line,#e7e2d8); padding:6px 20px 16px;
    box-shadow:0 12px 24px rgba(0,0,0,.10); z-index:60;
  }
  .site-header.nav-open .nav a{ padding:13px 2px; font-size:16px;
    border-bottom:1px solid var(--line-soft,rgba(0,0,0,.07)); }
  .site-header.nav-open .header-cta{ display:inline-flex !important;
    position:absolute; left:20px; right:20px; top:calc(70px + 100%); }
  .menu-btn[aria-expanded="true"]{ border-color:var(--accent,#b8a380); color:var(--accent-ink,#7a5f33); }
}

/* ===== WPブロックリスト整形（.bul/.num 以外のul/olに点・字下げを復活） ===== */
.prose ul:not(.bul):not(.toc-list){ list-style:disc; padding-left:1.5em; }
.prose ol:not(.num):not(.toc-list){ list-style:decimal; padding-left:1.6em; }
.prose ul:not(.bul):not(.toc-list) li,
.prose ol:not(.num):not(.toc-list) li{ display:list-item; list-style:inherit; margin:6px 0; color:var(--on-sub); }
/* パンくず：モバイルは現在ページ名を1行省略表示 */
@media (max-width:760px){
  .breadcrumb{ padding-top:var(--s-sm,14px); }
  .breadcrumb ol{ flex-wrap:wrap; gap:4px 6px; font-size:11.5px; line-height:1.6; }
  .breadcrumb li{ gap:6px; }
  .breadcrumb li:last-child{ flex-basis:100%; margin-top:2px; }
  .breadcrumb [aria-current]{ white-space:normal; color:var(--on-meta,#928b80); }
}


/* ===== モバイル：本文＋サイドバーを確実に縦積み（grid非依存・display:block で堅牢化） ===== */
@media (max-width:900px){
  .wrap.layout{ display:block !important; }
  .wrap.layout > main{ width:100%; }
  .wrap.layout > .sidebar{ width:100%; margin-top:var(--s-xl,40px); position:static; }
  .article-byline{ flex-wrap:wrap; gap:10px; }
  .article-byline .dates{ width:100%; margin-left:0; }
}


/* ===== パンくず最終修正（文字単位の縦分割を解消） ===== */
.breadcrumb ol{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; }
.breadcrumb li{ display:flex; align-items:center; gap:6px; }
.breadcrumb a, .breadcrumb .sep{ white-space:nowrap; overflow-wrap:normal; word-break:keep-all; }
.breadcrumb [aria-current]{ white-space:normal; overflow-wrap:normal; word-break:normal; }
@media (max-width:760px){
  .breadcrumb ol{ font-size:11.5px; line-height:1.6; }
  .breadcrumb li:last-child{ flex-basis:100%; margin-top:2px; }
  .breadcrumb [aria-current]{ color:var(--on-meta,#928b80); }
}


/* ===== 記事コンテナの左右ガター復活（.layout の padding ショートハンドで0になっていた） ===== */
.wrap.layout{ padding-left:var(--s-md,24px); padding-right:var(--s-md,24px); }
@media (max-width:760px){
  .wrap.layout{ padding-top:16px; padding-bottom:var(--s-xl,50px); }
  /* ボックスの過剰な左右paddingを縮小（端末幅でも詰まらないように） */
  .article-cta, .supervisor-box, .conditions, .cta-banner{ padding-left:20px !important; padding-right:20px !important; }
}


/* ===== 一覧カードをスマホで縦積み（横並びだとタイトルが潰れるため） ===== */
@media (max-width:600px){
  .post-list .post-card{ grid-template-columns:1fr; }
  .post-list .post-card .thumb{ aspect-ratio:16/9; border-right:none; border-bottom:1px solid var(--line,#e7e2d8); }
  .post-list .post-card h3{ font-size:1.05rem; line-height:1.5; }
}


/* ===== page-head/breadcrumb の左右ガター復活（.wrap の左右paddが shorthand で消えていた） ===== */
.wrap.breadcrumb, .wrap.page-head{ padding-left:var(--s-md,24px); padding-right:var(--s-md,24px); }
@media (max-width:760px){
  .wrap.page-head{ padding-top:16px; padding-bottom:var(--s-md,24px); }
}


/* ===== .wrap.inner（関連記事/カテゴリ・著者hero）の左右ガター復活 ===== */
.wrap.inner{ padding-left:var(--s-md,24px); padding-right:var(--s-md,24px); }

/* パンくず ol の既定左padding(40px)を除去 */
.breadcrumb ol{ padding:0; margin:0; list-style:none; }

/* article-head の上paddingを除去 */
.article-head{ padding-top:0 !important; margin-top:0 !important; }


/* ===== パンくず: 1行固定（折返さず、長いタイトルは…省略） ===== */
.breadcrumb ol{ flex-wrap:nowrap !important; overflow:hidden; }
.breadcrumb li{ flex:0 0 auto; }
.breadcrumb li:last-child{ flex:1 1 auto; min-width:0; overflow:hidden; margin-top:0 !important; flex-basis:auto !important; }
.breadcrumb li:last-child [aria-current]{ display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
