:root {
  --body-font: "Hiragino Mincho Pro", "Noto Serif JP", "Yu Mincho", Georgia, serif;
  --sans-font: "Hiragino Kaku Gothic Pro", "Noto Sans JP", "Yu Gothic", "Helvetica Neue", sans-serif;
  --max-width: 980px;
  --accent: #0055cc;
  --border: #d8d8d8;
}
html { font-size: 16px; }
body {
  font-family: var(--body-font);
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 2em 5em;
  line-height: 1.9;
  color: #1c1c1c;
  background: #fff;
}
h1, h2, h3, h4, h5, h6 { font-family: var(--sans-font); font-weight: bold; margin-top: 1.8em; line-height: 1.4; }
h1 { font-size: 1.75em; border-bottom: 2px solid #333; padding-bottom: 0.3em; }
h2 { font-size: 1.35em; border-bottom: 1px solid var(--border); padding-bottom: 0.2em; }
h3 { font-size: 1.12em; }
p  { margin: 0.8em 0; }
a  { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
blockquote { border-left: 3px solid #aaa; margin: 1em 0; padding: 0.4em 1em; color: #555; }
code { font-size: 0.9em; background: #f5f5f5; padding: 0.1em 0.35em; border-radius: 3px; }
pre { background: #f5f5f5; padding: 1em; border-radius: 4px; overflow-x: auto; }
pre code { background: none; padding: 0; }
table { border-collapse: collapse; width: 100%; margin: 1em 0; display: block; overflow-x: auto; }
th, td { border: 1px solid #ccc; padding: 0.45em 0.75em; text-align: left; vertical-align: top; }
th { background: #f0f0f0; font-family: var(--sans-font); }
hr { border: none; border-top: 1px solid var(--border); margin: 2em 0; }
.math.display { display: block; overflow-x: auto; padding: 0.5em 0; }
.site-nav { font-family: var(--sans-font); font-size: 0.88em; background: #f8f8f8; border-bottom: 1px solid var(--border);
            padding: 0.55em 2em; margin: 0 -2em 2.5em; }
.site-nav a { color: var(--accent); margin-right: 1.2em; }
footer { margin-top: 3.5em; padding-top: 1em; border-top: 1px solid var(--border); font-size: 0.82em; color: #666;
         font-family: var(--sans-font); }
@media (max-width: 640px) { body { padding: 0 1em 4em; } .site-nav { margin: 0 -1em 2em; padding: 0.55em 1em; } }
