
:root{--paper:#f7f7f2;--surface:#fff;--ink:#20312e;--muted:#66736b;--line:#e0e6dd;--soft:#eef2e9;--accent:#28694e;--tint:#e6efe6;--warm:#f7e8d8;--shadow:0 10px 35px #223d2910;--reading:18px;color-scheme:light}
html[data-theme=dark]{--paper:#151d1a;--surface:#1c2722;--ink:#e5eae4;--muted:#a3b0a5;--line:#34443a;--soft:#233229;--accent:#9cc9a5;--tint:#253e2e;--warm:#3b3024;--shadow:none;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.7 "Leelawadee UI","Noto Sans Thai",system-ui,sans-serif}a{color:inherit}button,input{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button:disabled{cursor:default;opacity:.5}.skip{position:fixed;top:-70px;left:15px;z-index:20;background:var(--ink);color:var(--surface);padding:10px}.skip:focus{top:10px}
.topbar{height:70px;position:sticky;top:0;z-index:9;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px;gap:20px}.brand{text-decoration:none;font-weight:650;letter-spacing:-.03em;font-size:19px;display:flex;align-items:center;gap:10px}.brandmark{width:24px;height:24px;border:1px solid var(--accent);border-radius:6px;display:grid;place-items:center;color:var(--accent);font-size:14px}.toolbar{display:flex;gap:8px;align-items:center}.tool{background:none;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-size:13px}.tool:hover{background:var(--soft)}.progress{position:fixed;top:69px;height:2px;background:var(--accent);width:0;z-index:10;pointer-events:none}
.layout{max-width:1250px;margin:auto;display:grid;grid-template-columns:248px minmax(0,1fr);gap:76px;padding:40px 42px 80px}.sidebar{position:sticky;top:102px;align-self:start;max-height:calc(100vh - 130px);overflow:auto}.overline{font-size:11px;text-transform:uppercase;letter-spacing:.14em;font-weight:650;color:var(--muted)}.sidebar .back{text-decoration:none;display:inline-block;margin-bottom:34px;font-size:13px;color:var(--muted)}.sidebar h2{font-size:15px;font-weight:600;margin:8px 0 18px}.contents{display:flex;flex-direction:column;gap:6px}.contents a{padding:10px 12px;text-decoration:none;border-radius:8px;font-size:13px;color:var(--muted);display:flex;gap:10px;align-items:baseline}.contents a span{font-size:11px;opacity:.7;font-variant-numeric:tabular-nums}.contents a.active{color:var(--accent);background:var(--tint);font-weight:600}.contents a:hover{background:var(--soft)}.side-note{margin-top:28px;border-top:1px solid var(--line);padding-top:20px;font-size:12px;color:var(--muted)}.saved{margin-top:10px;min-height:20px;font-size:12px;color:var(--accent)}.reading{max-width:740px;min-width:0}.crumb{font-size:12px;color:var(--muted);margin-bottom:28px}.crumb a{text-decoration:none}.hero{padding-bottom:48px;border-bottom:1px solid var(--line)}.chapter-label{display:inline-flex;gap:8px;align-items:center;font-size:12px;color:var(--accent);font-weight:600}.chapter-label:before{content:'';width:6px;height:6px;background:var(--accent);border-radius:50%}h1{font-size:clamp(34px,4vw,49px);font-weight:650;letter-spacing:-.055em;line-height:1.16;margin:16px 0 8px}.thai-title{font-size:25px;font-weight:400;margin:0 0 22px;letter-spacing:-.02em}.intro{font-size:19px;line-height:1.85;max-width:650px;margin:0;color:var(--muted)}.meta{display:flex;gap:20px;margin-top:22px;color:var(--muted);font-size:12px;flex-wrap:wrap}.resume{display:none;margin-top:22px;text-decoration:none;color:var(--accent);font-size:13px}
section.chapter{padding:52px 0 48px;border-bottom:1px solid var(--line)}.section-number{font-size:12px;color:var(--accent);font-weight:600;letter-spacing:.09em}.chapter h2{font-size:28px;line-height:1.45;letter-spacing:-.025em;margin:9px 0 20px;font-weight:600}.chapter h2 small{display:block;font-size:13px;letter-spacing:0;color:var(--muted);font-weight:400;margin-top:3px}.chapter p,.chapter li{font-size:var(--reading);line-height:1.95}.chapter p{margin:0 0 20px}.chapter strong{font-weight:650}.key{color:var(--accent)}.caption{font-size:12px!important;line-height:1.6!important;color:var(--muted);margin-top:12px!important}.callout{background:var(--tint);padding:21px 24px;border-radius:12px;margin:25px 0}.callout p{font-size:16px;margin:0}.callout .label{font-size:11px;letter-spacing:.08em;font-weight:650;color:var(--accent);margin-bottom:7px}.figure{margin:28px 0;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--shadow)}.figure-heading{font-size:12px;color:var(--muted);margin-bottom:18px;display:flex;justify-content:space-between;gap:10px}.split{display:grid;grid-template-columns:1fr 1fr;gap:15px}.tile{background:var(--soft);border-radius:12px;padding:22px}.tile-title{font-size:17px;font-weight:600;display:flex;align-items:center;gap:10px;margin-bottom:12px}.tile svg{width:26px;height:26px;color:var(--accent);flex:none}.tile p{font-size:14px;margin:0;color:var(--muted);line-height:1.8}.tile .examples{margin-top:14px;border-top:1px solid var(--line);padding-top:12px;color:var(--ink)}.layers{display:grid;gap:8px}.layer{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--line);border-radius:9px;padding:13px 17px}.layer strong{font-size:14px;min-width:125px}.layer span{font-size:13px;color:var(--muted)}.layer:nth-child(3){background:var(--tint)}.layer:nth-child(4){background:var(--soft)}.layer-note{text-align:center;color:var(--muted);font-size:11px;margin:7px 0}.compare{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:24px 0}.compare>div{padding:22px}.compare>div+div{border-left:1px solid var(--line)}.compare .term{font-size:12px;color:var(--muted);margin-bottom:8px}.compare .value{font-size:25px;font-weight:600;letter-spacing:-.025em}.compare p{font-size:14px;margin:8px 0 0;line-height:1.75;color:var(--muted)}
.demo-input{display:flex;align-items:center;gap:12px;margin-bottom:22px}.demo-input label{font-size:13px}.demo-input input{width:75px;background:var(--paper);border:1px solid var(--line);padding:9px 12px;border-radius:8px;color:var(--ink)}.flow{display:grid;grid-template-columns:1fr 20px 1fr 20px 1fr;align-items:center;gap:8px}.flow-step{border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:17px 12px;text-align:center;min-height:133px;transition:background .2s,border-color .2s}.flow-step.current{background:var(--tint);border-color:var(--accent)}.flow-step .tag{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.flow-step b{display:block;font-size:15px;margin:6px 0}.flow-value{font-size:20px;min-height:36px;font-variant-numeric:tabular-nums}.arrow{text-align:center;color:var(--muted)}.demo-controls{display:flex;gap:8px;margin:22px 0 13px;flex-wrap:wrap}.btn{border:1px solid var(--accent);background:var(--accent);color:var(--surface);border-radius:8px;padding:9px 17px;font-size:13px;font-weight:600}.btn.secondary{background:none;color:var(--accent);border-color:var(--line)}html[data-theme=dark] .btn{color:#17251b}.demo-message{font-size:14px!important;color:var(--muted);margin:0!important;min-height:50px}.devices{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0}.chip{border:1px solid var(--line);border-radius:7px;padding:7px 12px;color:var(--muted);font-size:12px;background:var(--surface)}.file-browser{display:grid;grid-template-columns:1fr 1fr;gap:20px}.folder-button{border:0;background:var(--tint);color:var(--accent);border-radius:7px;padding:9px 12px;width:100%;text-align:left;font-size:14px}.file-list{padding-left:22px;border-left:1px solid var(--line);margin:10px 0 0 12px;display:grid;gap:5px}.file-button{border:0;background:none;color:var(--muted);text-align:left;padding:9px 12px;font-size:13px;border-radius:6px;overflow-wrap:anywhere}.file-button[aria-pressed=true]{background:var(--soft);color:var(--ink)}.preview{padding:22px;background:var(--paper);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;justify-content:center;min-height:170px}.preview-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.preview-content{font-size:20px;font-weight:600;line-height:1.6;margin:12px 0}.preview-desc{font-size:12px;color:var(--muted)}.path{font-size:12px;margin-top:15px;overflow-wrap:anywhere;color:var(--muted)}.path code{font:12px/1.7 ui-monospace,Consolas,monospace;color:var(--accent)}.closing{background:var(--tint);border-radius:16px;padding:28px;margin-top:32px}.closing h3{font-size:18px;margin:0 0 12px;font-weight:600}.closing p{font-size:16px}.closing p:last-child{margin-bottom:0}.next-link{display:block;text-decoration:none;padding:22px;border:1px solid var(--line);border-radius:12px;margin-top:24px;transition:background .2s}.next-link:hover{background:var(--soft)}.next-link small{display:block;color:var(--muted);font-size:11px}.next-link strong{display:flex;justify-content:space-between;font-size:16px;margin-top:5px}.source{margin:34px 0;color:var(--muted);font-size:13px}.source summary{cursor:pointer;padding:12px 0}.source p,.source li{font-size:13px;line-height:1.8}.source ul{padding-left:20px}.source a{color:var(--accent)}footer{border-top:1px solid var(--line);padding-top:22px;display:flex;justify-content:space-between;font-size:12px;color:var(--muted);gap:15px}.mobile-toc{display:none}.reading-status{font-size:12px;color:var(--muted);margin:12px 0}.scroll-top{background:none;border:0;color:var(--accent);font-size:12px}.print-title{display:none}
@media(min-width:1500px){.layout{gap:90px}.reading{max-width:750px}}
@media(max-width:980px){.layout{grid-template-columns:190px minmax(0,1fr);gap:32px;padding:30px 26px}.topbar{padding:0 26px}.sidebar .back{margin-bottom:25px}.figure{padding:22px}.layer{display:block}.layer span{display:block;margin-top:3px}}
@media(max-width:720px){.topbar{height:62px;padding:0 20px}.brand{font-size:17px}.progress{top:61px}.tool{padding:6px 9px}.layout{display:block;padding:24px 20px 50px}.sidebar{display:none}.crumb{margin-bottom:20px;font-size:11px}.hero{padding-bottom:30px}.intro{font-size:17px}.thai-title{font-size:22px}.meta{gap:12px}.mobile-toc{display:block;border:1px solid var(--line);border-radius:9px;margin:22px 0 0;padding:10px 14px;font-size:13px}.mobile-toc summary{cursor:pointer}.mobile-toc nav{display:grid;gap:12px;padding-top:16px;padding-bottom:6px}.mobile-toc a{text-decoration:none;color:var(--accent)}section.chapter{padding:36px 0}.chapter h2{font-size:24px}.chapter p,.chapter li{font-size:calc(var(--reading) - 1px)}.figure{padding:18px;border-radius:12px}.split{grid-template-columns:1fr}.tile{padding:18px}.flow{gap:4px;grid-template-columns:1fr 12px 1fr 12px 1fr}.flow-step{padding:13px 5px;min-height:120px}.flow-step b{font-size:12px}.flow-step .tag{font-size:9px;letter-spacing:0}.flow-value{font-size:18px}.file-browser{grid-template-columns:1fr}.preview{min-height:140px}.compare>div{padding:17px}.compare .value{font-size:22px}.closing{padding:22px}.callout{padding:18px 20px}.figure-heading{font-size:11px}.layer{display:flex}.layer strong{min-width:110px;font-size:12px}.layer span{font-size:12px}footer{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{.topbar,.sidebar,.mobile-toc,.progress,.demo-controls,.demo-input,.toolbar,.btn,.next-link,footer,.resume{display:none!important}.layout{display:block;padding:0}.reading{max-width:none}.figure,.callout,.closing{box-shadow:none;break-inside:avoid}body{background:white;color:black}.source{display:block}.chapter{break-inside:auto}}
[hidden]{display:none!important}
html[data-theme=dark] .btn.secondary{color:var(--accent)}

.booknav{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:32px 0}.booknav a{padding:20px;border:1px solid var(--line);border-radius:10px;text-decoration:none}.booknav a:hover{background:var(--soft)}.booknav small{display:block;color:var(--muted);font-size:11px}.booknav strong{display:block;margin-top:6px;font-weight:600;font-size:15px}.topic-text{font-size:var(--reading);line-height:2;margin:16px 0}.concept-bridge{padding:20px 24px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.concept-bridge p{font-size:15px;margin:0}.concept-bridge span{font-size:11px;color:var(--accent);font-weight:600;display:block;margin-bottom:8px}.prereq{margin-top:25px;font-size:13px;color:var(--muted);line-height:2}.prereq a{color:var(--accent);text-decoration:none}.library-main{max-width:1080px;margin:auto;padding:45px 32px 75px}.library-hero{padding:25px 0 30px;max-width:720px}.library-hero h1{font-size:45px}.library-hero p{color:var(--muted);font-size:18px;line-height:1.9}.library-controls{position:sticky;top:70px;background:var(--paper);z-index:4;padding:15px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.library-controls input{flex:1;min-width:160px;max-width:450px;background:var(--surface);border:1px solid var(--line);padding:12px 16px;border-radius:9px;color:var(--ink)}.filters{display:flex;gap:6px;flex-wrap:wrap}.filters button{border:1px solid var(--line);background:none;color:var(--muted);padding:8px 10px;border-radius:7px;font-size:12px}.filters button[aria-pressed=true]{background:var(--tint);color:var(--accent);border-color:var(--accent)}.catalog{margin-top:26px}.shelf{margin:35px 0 45px}.shelf-heading{display:flex;align-items:baseline;gap:10px;margin-bottom:20px}.shelf-heading h2{font-size:22px;font-weight:600;letter-spacing:-.02em;margin:0}.shelf-heading span{font-size:12px;color:var(--muted)}.chapters{display:grid;grid-template-columns:1fr 1fr;gap:18px}.chapter-card{border:1px solid var(--line);background:var(--surface);border-radius:13px;overflow:hidden}.chapter-card h3{font-size:17px;font-weight:600;margin:0;padding:22px 22px 4px;line-height:1.5}.chapter-card .chapter-th{font-size:12px;color:var(--muted);padding:0 22px 16px;margin:0}.chapter-card ul{list-style:none;padding:0;margin:0}.chapter-card li{border-top:1px solid var(--line)}.chapter-card a{display:flex;gap:13px;align-items:start;text-decoration:none;padding:15px 22px;font-size:14px}.chapter-card a:hover{background:var(--soft)}.chapter-card .gid{font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted);padding-top:2px;min-width:34px}.chapter-card .topic-count{font-size:11px;color:var(--muted);display:block;margin-top:3px}.chapter-card .check{margin-left:auto;color:var(--accent);font-size:11px}.library-foot{font-size:12px;color:var(--muted);line-height:1.9;border-top:1px solid var(--line);padding-top:25px}.results{font-size:12px;color:var(--muted);padding-top:15px}.continue-card{display:none;border:1px solid var(--line);border-radius:12px;background:var(--tint);padding:18px 22px;text-decoration:none;margin:8px 0 20px;max-width:650px}.continue-card small{display:block;color:var(--muted);font-size:11px}.continue-card strong{display:block;color:var(--accent);font-size:16px;margin-top:6px}.empty-search{padding:40px 0;color:var(--muted)}.book-switch{margin:20px 0;font-size:12px}.book-switch summary{cursor:pointer;color:var(--muted)}.book-switch a{display:block;padding:6px 0;color:var(--accent);text-decoration:none}.example-title{font-size:12px;color:var(--accent);margin:0 0 12px}.evidence-list{display:grid;gap:12px}.evidence-list a{font-size:12px;line-height:1.8}.related-title{font-size:11px;color:var(--muted);margin-top:20px}.local-note{font-size:12px;color:var(--muted);line-height:1.8}.toc-mini{font-size:12px;color:var(--muted)}@media(max-width:720px){.library-main{padding:25px 20px 50px}.library-hero h1{font-size:35px}.library-hero p{font-size:16px}.chapters{grid-template-columns:1fr}.library-controls{top:62px}.booknav{gap:10px}.booknav a{padding:15px}.booknav strong{font-size:13px}.shelf-heading h2{font-size:20px}.chapter-card a{padding:14px 18px}.chapter-card h3{padding:19px 18px 4px}.chapter-card .chapter-th{padding:0 18px 15px}.filters button{font-size:11px}.concept-bridge{padding:18px 20px}}