:root{
  --ink:#1d2129;
  --sub:#59606c;
  --accent:#31548C;
  --line:#e4e2dc;
  --ground:#fbfaf7;
  --page-gutter:24px;
}

*{margin:0;padding:0;box-sizing:border-box}

html{scroll-behavior:smooth}

body{
  background:var(--ground);
  color:var(--ink);
  font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic",sans-serif;
  font-size:16.5px;
  line-height:1.95;
}

.site-shell{
  width:100%;
  max-width:1140px;
  margin:0 auto;
  padding:56px var(--page-gutter) 64px;
}

.article-header,.article-layout{width:min(100%,960px);margin-inline:auto}

.header-copy{max-width:680px}

.back-link{display:inline-block;margin-bottom:24px;font-size:13px}

h1{
  font-family:"Hiragino Mincho ProN","Yu Mincho",serif;
  font-size:clamp(28px,4vw,38px);
  font-weight:600;
  line-height:1.5;
  letter-spacing:.04em;
}

.article-meta{
  display:flex;
  gap:10px;
  margin-top:12px;
  color:var(--sub);
  font-size:12.5px;
  font-variant-numeric:tabular-nums;
  letter-spacing:.04em;
}

.article-meta span+span::before{content:"·";margin-right:10px}

.hero{margin-top:32px}
.hero img{display:block;width:100%;height:auto;border-radius:12px}

figcaption{
  margin-top:8px;
  color:var(--sub);
  font-size:12.5px;
  line-height:1.7;
}

.article-layout{
  display:grid;
  grid-template-columns:minmax(0,680px) 260px;
  gap:20px;
  align-items:start;
  margin-top:52px;
}

article{min-width:0}
article>p{margin-top:1.4em}
article>p:first-child{margin-top:0;font-size:17.5px}

article h2{
  margin-top:3em;
  margin-bottom:1.4em;
  border-left:4px solid var(--accent);
  padding-left:14px;
  font-size:19px;
  font-weight:700;
  line-height:1.65;
  letter-spacing:.02em;
  scroll-margin-top:24px;
}

a{color:var(--accent);text-underline-offset:3px}

.wide{width:960px;max-width:calc(100vw - (var(--page-gutter) * 2))}

.toc{position:sticky;top:32px;font-size:15.5px;line-height:1.8}
.toc-title{color:var(--sub);font-size:13.5px;font-weight:700;letter-spacing:.14em}
.toc ul{margin-top:16px;border-left:1px solid var(--line);list-style:none}
.toc li+li{margin-top:14px}
.toc a{display:block;border-left:2px solid transparent;margin-left:-1px;padding-left:14px;color:var(--sub);text-decoration:none}
.toc a:hover,.toc a:focus-visible,.toc a[aria-current="true"]{border-left-color:var(--accent);color:var(--accent);font-weight:700}

footer{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:8px 24px;
  width:min(100%,960px);
  margin:72px auto 0;
  border-top:1px solid var(--line);
  padding-top:16px;
  color:var(--sub);
  font-size:12.5px;
}

@media(max-width:1079px){
  .article-layout{width:min(100%,680px);grid-template-columns:minmax(0,680px)}
  .toc{display:none}
  .wide{margin-left:calc((100% - min(960px, calc(100vw - (var(--page-gutter) * 2)))) / 2)}
}

@media(max-width:600px){
  :root{--page-gutter:20px}
  .site-shell{padding-top:32px;padding-bottom:48px}
  .back-link{margin-bottom:18px}
  .hero{margin-top:24px}
  .article-layout{margin-top:40px}
  article h2{margin-top:2.7em;font-size:18px}
  footer{margin-top:56px}
}

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