:root {
  --ink:#1c2733;
  --paper:#fbfaf7;
  --accent:#9a3324;
  --accent2:#2c5f6f;
  --line:#d8d3c6;
  --soft:#f1ece1;
  --sidebar-w:230px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:"Hiragino Mincho ProN","Yu Mincho","Noto Serif JP",Georgia,serif;}
body{display:flex;}
nav#toc{position:fixed;top:0;left:0;width:var(--sidebar-w);height:100vh;overflow-y:auto;background:#f1ece1;border-right:1px solid var(--line);padding:1.6em 1.2em;font-family:"Hiragino Sans","Helvetica Neue",sans-serif;font-size:.78em;line-height:1.9;}
nav#toc .toc-title{font-size:.75em;letter-spacing:.15em;color:#8a8275;text-transform:uppercase;margin-bottom:1em;}
nav#toc a{display:block;color:var(--ink);text-decoration:none;padding:.15em 0 .15em .6em;border-left:2px solid transparent;}
nav#toc a:hover{color:var(--accent2);border-left-color:var(--accent2);}
main{margin-left:var(--sidebar-w);max-width:940px;padding:3em 3em 8em 3em;}
h1{font-family:"Hiragino Sans","Helvetica Neue",sans-serif;font-size:1.7em;font-weight:700;border-bottom:3px solid var(--ink);padding-bottom:.3em;margin-bottom:.2em;}
.subtitle{font-family:"Hiragino Sans","Helvetica Neue",sans-serif;color:#8a8275;font-size:.85em;margin-bottom:2.5em;}
section{margin-bottom:3.2em;scroll-margin-top:2em;}
h2{font-family:"Hiragino Sans","Helvetica Neue",sans-serif;font-weight:600;font-size:1.15em;border-left:5px solid var(--accent2);padding-left:.6em;margin-bottom:1em;}
p{line-height:1.9;}
.mathbox{background:#fff;border:1px solid var(--line);border-radius:4px;padding:1em 1.3em;margin:1em 0;overflow-x:auto;}
.mathbox.small{max-width:34em;}
.mathbox.wide{overflow-x:auto;}
.note{font-family:"Hiragino Sans","Helvetica Neue",sans-serif;font-size:.88em;color:#6b6457;line-height:1.8;}
.toggle-row{display:flex;gap:.6em;flex-wrap:wrap;margin:.7em 0 1em;}
.toggle-btn{font-family:"Hiragino Sans","Helvetica Neue",sans-serif;font-size:.86em;cursor:pointer;background:#fff;border:1px solid var(--line);border-radius:20px;padding:.45em 1.05em;color:var(--accent2);}
.toggle-btn:hover,.toggle-btn.active{background:#e9f1f3;border-color:var(--accent2);}
.cancel-state{display:none;}
.cancel-state.active{display:block;}
@media (max-width:900px){nav#toc{display:none;}main{margin-left:0;padding:2em 1.2em 6em;}}
