:root {
  --paper:#fbfaf6; --surface:#fff; --ink:#252528; --muted:#65676d; --line:#d9d5cc;
  --wine:#8f1738; --wine-dark:#68102a; --blue:#176b87; --teal:#25756f; --gold:#a46212;
  --bar:3.7rem; --nav:16rem; --measure:74ch;
  --font:Inter,"Noto Sans","Noto Sans JP",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;color:var(--ink);background:var(--paper);font:1.05rem/1.75 var(--serif)}
a{color:var(--blue);text-underline-offset:.18em} a:hover{color:var(--wine)} a:focus-visible,button:focus-visible,summary:focus-visible{outline:.2rem solid var(--blue);outline-offset:.18rem}
h1,h2,h3,.book-bar,.book-nav,footer{font-family:var(--font)} h1{max-width:16ch;margin:.25rem 0;font-size:clamp(2.6rem,6vw,5.2rem);line-height:1.02;letter-spacing:-.045em} h2{margin-top:0;font-size:clamp(1.7rem,3vw,2.45rem);line-height:1.18;letter-spacing:-.02em} h3{line-height:1.25} p,li{max-width:var(--measure)} code,pre{font-family:var(--mono)} code{font-size:.9em} pre{padding:1rem;overflow:auto;color:#edf0f2;background:#23272d;border-radius:.45rem;font-size:.86rem;line-height:1.55}
table{width:100%;border-collapse:collapse;font-family:var(--font);font-size:.92rem} th,td{padding:.72rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top} th{background:#f0ede6}
.skip-link{position:fixed;left:-9999px;top:.5rem;z-index:100;padding:.5rem;color:var(--ink);background:#fff}.skip-link:focus{left:.5rem}
.book-bar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--bar);padding:.5rem clamp(.8rem,3vw,2.6rem);color:#fff;background:#29292c;border-bottom:.22rem solid var(--wine);font-size:.86rem}.book-bar a{color:#fff;text-decoration:none;white-space:nowrap}.book-bar>div{display:flex;gap:.4rem;overflow-x:auto}.book-bar>div a{padding:.45rem .62rem;border:1px solid rgb(255 255 255 / 28%);border-radius:.32rem}.book-bar .primary{background:var(--wine);border-color:var(--wine)}
.book-nav{position:fixed;top:var(--bar);bottom:0;left:0;width:var(--nav);padding:1rem;overflow:auto;background:#f1efe9;border-right:1px solid var(--line);font-size:.84rem}.book-nav p{margin:.1rem .55rem .7rem;color:var(--wine);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.book-nav button{display:none}.book-nav nav{display:grid;gap:.05rem}.book-nav a{padding:.38rem .55rem;color:#48494e;border-left:.18rem solid transparent;text-decoration:none}.book-nav a:hover,.book-nav a[aria-current=true]{color:var(--wine-dark);background:#fff;border-left-color:var(--wine)}
main{margin-left:var(--nav)} article{width:min(100% - 3rem,78rem);margin:auto} article>section{max-width:var(--measure);margin:auto;padding-block:4rem;border-bottom:1px solid var(--line);scroll-margin-top:calc(var(--bar) + 1rem)}
.book-hero{min-height:78vh;display:grid;align-content:center;gap:.55rem;padding:5rem 0 4rem}.part,.chapter-number{margin:0;font-family:var(--font);font-size:.78rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.part{color:var(--wine)}.chapter-number{color:var(--muted)}.abstract{max-width:64ch;margin:.8rem 0;color:#47484d;font-size:clamp(1.15rem,2vw,1.38rem)}.chapter-question{max-width:60ch;margin-top:1rem;padding:1rem 1.2rem;background:#fff;border-left:.35rem solid var(--wine);box-shadow:0 .5rem 1.5rem rgb(30 30 35 / 7%);font-family:var(--font)}.chapter-question p{margin:.25rem 0 0}
.equation{margin:1.25rem 0;padding:1rem;overflow-x:auto;background:#f1ede4;border-left:.3rem solid var(--gold);font-size:1.05rem}.worked,.contract,aside{margin:1.35rem 0;padding:1rem 1.15rem;background:#fff;border:1px solid var(--line);border-left:.35rem solid var(--teal);border-radius:.45rem}.worked h3,.contract h3{margin-top:0}.contract{border-left-color:var(--blue)} aside{border-left-color:var(--gold);font-family:var(--font);font-size:.94rem}
.review-grid{display:grid;gap:.75rem}.review-card{margin:0;padding:.9rem 1rem;background:#fff;border:1px solid var(--line);border-radius:.4rem;font-family:var(--font)}.review-card summary{display:grid;grid-template-columns:2rem minmax(0,1fr) auto;gap:.7rem;align-items:start;cursor:pointer;font-weight:700}.review-card summary span{display:grid;place-items:center;width:1.7rem;height:1.7rem;color:#fff;background:var(--wine);border-radius:50%;font-size:.75rem}.review-card summary em{color:var(--blue);font-size:.8rem;font-style:normal;white-space:nowrap}.review-card .answer{margin:.8rem 0 0 2.7rem;padding:.75rem 1rem;background:#e8f4f1;border-left:.25rem solid var(--teal)}.review-card .answer p{margin:0}
.glossary-list{display:grid;grid-template-columns:minmax(9rem,.3fr) minmax(0,1fr);font-family:var(--font);font-size:.92rem}.glossary-list dt,.glossary-list dd{margin:0;padding:.72rem;border-bottom:1px solid var(--line)}.glossary-list dt{color:var(--wine-dark);font-weight:750}.reference-list{font-family:var(--font);font-size:.94rem}#page-bottom{height:1px}footer{margin-left:var(--nav);padding:2rem;text-align:center;color:var(--muted);font-size:.82rem}
@media(max-width:850px){:root{--nav:0rem}.book-bar{align-items:flex-start}.book-nav{position:sticky;top:var(--bar);z-index:25;width:100%;padding:.55rem .8rem}.book-nav p{display:none}.book-nav button{display:block;width:100%;padding:.45rem .6rem;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:.3rem;text-align:left}.book-nav nav{display:none;max-height:55vh;overflow:auto;padding-top:.5rem}.book-nav.open nav{display:grid}main,footer{margin-left:0}article{width:min(100% - 2rem,78rem)}.book-hero{min-height:65vh;padding-top:3rem}}
@media(max-width:560px){.book-bar{display:block}.book-bar>div{margin-top:.4rem}.glossary-list{grid-template-columns:1fr}.glossary-list dt{padding-bottom:.15rem;border-bottom:0}.glossary-list dd{padding-top:.15rem}.review-card summary{grid-template-columns:2rem minmax(0,1fr)}.review-card summary em{grid-column:2}.review-card .answer{margin-left:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
