* { box-sizing: border-box; }
body { margin: 0; background: #f4f3ef; color: #202122; font-family: -apple-system, "Segoe UI", "Hiragino Sans", "Noto Sans JP", sans-serif; font-size: 15px; line-height: 1.75; }
a { color: #3366cc; text-decoration: none; overflow-wrap: anywhere; }
a:hover { text-decoration: underline; }
.site-header { background: #3d4a2c; color: #fff; }
.site-inner { max-width: 1100px; margin: 0 auto; padding: 0.9rem 1.25rem; display: flex; align-items: baseline; gap: 0.9rem; }
.site-logo { color: #fff; font-family: Georgia, "Linux Libertine", serif; font-size: 1.45rem; letter-spacing: 0.02em; }
.site-logo:hover { text-decoration: none; }
.site-tagline { font-size: 0.78rem; color: #cfd8bd; }
.layout { max-width: 1100px; margin: 1.25rem auto; padding: 0 1.25rem; display: flex; gap: 1.5rem; align-items: flex-start; }
.sidebar { flex: 0 0 200px; background: #fff; border: 1px solid #d8d5cb; }
.sidebar nav { padding: 0.6rem 0.9rem 0.9rem; }
.nav-group { margin-top: 0.7rem; }
.nav-group:first-child { margin-top: 0; }
.nav-group h3 { margin: 0 0 0.25rem; font-size: 0.82rem; font-weight: 700; color: #5a5f52; text-transform: uppercase; letter-spacing: 0.04em; border-bottom: 1px solid #e4e1d6; padding-bottom: 0.2rem; }
.nav-group ul { margin: 0.15rem 0 0; padding-left: 1.1rem; }
.nav-group li { font-size: 0.88rem; margin: 0.15rem 0; }
.content { flex: 1; min-width: 0; background: #fff; border: 1px solid #d8d5cb; padding: 1.1rem 1.75rem 2rem; }
.breadcrumb { font-size: 0.8rem; color: #72777d; margin-bottom: 0.4rem; }
.breadcrumb .sep { color: #a2a9b1; }
.page-meta { font-size: 0.78rem; color: #72777d; margin-bottom: 0.8rem; }
.toc { float: right; width: 15rem; margin: 0 0 1rem 1.5rem; background: #f8f9fa; border: 1px solid #d0d5da; padding: 0.7rem 1rem; font-size: 0.85rem; }
.toc-title { font-weight: 700; text-align: center; margin-bottom: 0.3rem; }
.toc ol { margin: 0; padding-left: 1.4rem; }
.toc li { margin: 0.15rem 0; }
.content h1 { font-family: Georgia, "Linux Libertine", serif; font-weight: 400; font-size: 1.8rem; border-bottom: 1px solid #a2a9b1; padding-bottom: 0.25rem; margin: 0.2rem 0 1rem; }
.content h2 { font-family: Georgia, "Linux Libertine", serif; font-weight: 400; font-size: 1.4rem; border-bottom: 1px solid #a2a9b1; padding-bottom: 0.15rem; margin: 1.9rem 0 0.7rem; }
.content h3 { font-size: 1.05rem; font-weight: 700; margin: 1.4rem 0 0.4rem; }
.content p { margin: 0.6rem 0; }
.content code { background: #f0f0ee; border: 1px solid #e0e0dc; padding: 0.08em 0.35em; border-radius: 3px; font-size: 0.92em; }
.content pre { background: #f8f9fa; border: 1px solid #d0d5da; padding: 0.8rem; overflow-x: auto; }
.content blockquote { border-left: 3px solid #c8ccd1; margin: 0.8rem 0; padding: 0.1rem 0 0.1rem 1rem; color: #54595d; }
.content table { border-collapse: collapse; margin: 0.8rem 0; font-size: 0.92rem; }
.content th, .content td { border: 1px solid #a2a9b1; padding: 0.35rem 0.7rem; }
.content th { background: #eaecf0; }
.content ul, .content ol { padding-left: 1.6rem; }
.content hr { border: none; border-top: 1px solid #d8d5cb; margin: 1.5rem 0; }
.site-footer { max-width: 1100px; margin: 0 auto 1.5rem; padding: 0 1.25rem; font-size: 0.78rem; color: #72777d; }
@media (max-width: 760px) {
  .layout { flex-direction: column; }
  .sidebar { flex: none; width: 100%; }
  .toc { float: none; width: auto; margin: 0 0 1rem; }
}
