:root{--bg2: var(--bg-soft);--bg3: var(--bg-soft);--text2: var(--text-soft);--text3: var(--text-soft);--accent-light: var(--accent-soft);--line: var(--border);--good: #1f7a43;--bad: #c0392b;--mid: #b7791f;--c1: var(--accent);--c2: #3b7dd8;--c3: #1f9d57;--c4: #c98a1a;--grid: var(--border);--frame: var(--border)}html[data-theme=dark]{--good: #5cc080;--bad: #e07a72;--mid: #d8a64a;--c2: #7ab0e0;--c3: #5cc080;--c4: #d8a64a}.tb{display:flex;gap:2.5rem;align-items:flex-start;max-width:1080px;margin:0 auto;padding:1.5rem 1.25rem 4rem}.tb-toc{width:240px;flex:0 0 240px;position:sticky;top:80px;align-self:flex-start;max-height:calc(100vh - 100px);overflow-y:auto;padding-right:1rem;border-right:1px solid var(--border)}.tb-toc .brand{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-soft);margin-bottom:4px}.tb-toc .vol{font-weight:700;font-size:17px;line-height:1.3;color:var(--text);margin-bottom:18px}#toc a{display:block;text-decoration:none;color:var(--text-soft);font-size:13.5px;padding:5px 10px;border-radius:6px;line-height:1.45;margin-bottom:1px;border-left:2px solid transparent}#toc a .num{font-family:var(--font-mono);font-size:11px;color:var(--text-soft);margin-right:8px}#toc a:hover{background:var(--bg-soft);color:var(--text)}#toc a.active{background:var(--accent-soft);color:var(--accent);border-left-color:var(--accent);font-weight:600}#toc a.active .num{color:var(--accent)}.content{flex:1;min-width:0;max-width:760px;counter-reset:ch}.tb-file{font-family:var(--font-mono);font-size:12px;color:var(--text-soft)}.tb-title{font-weight:700;font-size:clamp(1.7rem,4vw,2.3rem);line-height:1.18;margin:.4rem 0 .6rem}.lede{font-size:18px;color:var(--text-soft);margin-bottom:8px}.meta{font-family:var(--font-mono);font-size:11.5px;color:var(--text-soft);letter-spacing:.04em;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:10px 0;margin:22px 0 40px;display:flex;gap:18px;flex-wrap:wrap}.content h2{font-weight:700;font-size:26px;line-height:1.25;margin:54px 0 4px;scroll-margin-top:80px;color:var(--text);counter-increment:ch}.content h2:before{content:var(--ch-label, "บทที่ ") counter(ch,decimal-leading-zero);display:block;font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--accent);letter-spacing:.08em;margin-bottom:6px}.content h2:first-of-type{margin-top:18px}.content h2.ref-h{counter-increment:none}.content h2.ref-h:before{content:"§"}.content h3{font-size:18px;font-weight:600;margin:30px 0 8px;color:var(--text)}.content p{margin:0 0 14px}.content strong{font-weight:600;color:var(--text)}.content em{font-style:normal;font-weight:600;color:var(--accent)}.content code{font-family:var(--font-mono);font-size:.86em;background:var(--bg-code);padding:1px 5px;border-radius:4px;color:var(--text)}.content a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.eq-block{border-left:3px solid var(--accent);background:var(--bg-soft);padding:14px 18px;margin:20px 0;border-radius:0 8px 8px 0}.eq-lbl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);margin-bottom:8px}.eq{font-family:var(--font-mono);font-size:15px;line-height:1.85;color:var(--text);white-space:pre-wrap;overflow-x:auto}.eq-note{font-size:13.5px;color:var(--text-soft);margin-top:10px;padding-top:9px;border-top:1px dashed var(--border)}.eq-note b{font-family:var(--font-mono);color:var(--accent);font-weight:500}.callout{border-radius:8px;padding:13px 16px;margin:20px 0;font-size:14.5px;border:1px solid var(--border);background:var(--bg-soft)}.callout .cl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;margin-bottom:6px;display:block}.callout p:last-child{margin-bottom:0}.callout.info{border-left:3px solid var(--accent)}.callout.info .cl{color:var(--accent)}.callout.warn{border-left:3px solid var(--mid)}.callout.warn .cl{color:var(--mid)}.callout.mech{border-left:3px solid var(--text-soft)}.callout.mech .cl{color:var(--text-soft)}.callout.good{border-left:3px solid var(--good)}.callout.good .cl{color:var(--good)}.callout.bad{border-left:3px solid var(--bad)}.callout.bad .cl{color:var(--bad)}.content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:14px}.content th{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;text-align:left;color:var(--text-soft);font-weight:500;border-bottom:1.5px solid var(--border);padding:8px 11px}.content td{padding:9px 11px;border-bottom:1px solid var(--border);vertical-align:top;color:var(--text-soft)}.content td:first-child{color:var(--text);font-weight:500}td.g{color:var(--good)!important;font-weight:500}td.b{color:var(--bad)!important;font-weight:500}td.m{color:var(--mid)!important;font-weight:500}.content tr:last-child td{border-bottom:none}.chain{display:flex;flex-wrap:wrap;gap:0;align-items:stretch;margin:22px 0}.chain .step{position:relative;flex:1;min-width:118px;background:var(--bg-soft);border:1px solid var(--border);border-radius:7px;padding:11px 12px;margin-right:26px;font-size:13px}.chain .step:last-child{margin-right:0}.chain .step:after{content:"→";position:absolute;right:-21px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);color:var(--accent);font-size:18px}.chain .step:last-child:after{display:none}.chain .step .t{font-family:var(--font-mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-soft);margin-bottom:3px}.chain .step .v{font-weight:600;color:var(--text);font-size:13.5px}.path-diagram{background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:20px;margin:24px 0;font-family:var(--font-mono);font-size:12.5px;line-height:1.95;color:var(--text-soft);white-space:pre;overflow-x:auto}.path-diagram .hl{color:var(--accent);font-weight:500}.path-diagram .lp{color:var(--bad);font-weight:500}figure{margin:24px 0 26px}.chart-box{background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:14px 10px 6px}svg.chart{width:100%;height:auto;display:block}svg.chart .grid{stroke:var(--grid);stroke-width:1}svg.chart .frame{fill:none;stroke:var(--frame);stroke-width:1.2}svg.chart .ax{fill:var(--text-soft);font-family:var(--font-mono);font-size:10px}svg.chart .axlbl{fill:var(--text-soft);font-family:var(--font-mono);font-size:10.5px;letter-spacing:.03em}svg.chart .marker{stroke:var(--text-soft);stroke-width:1;stroke-dasharray:3 3}svg.chart .mtext{fill:var(--text-soft);font-family:var(--font-mono);font-size:9.5px}svg.chart .curve{fill:none;stroke-width:2.1;stroke-linejoin:round;stroke-linecap:round}svg.chart .c1{stroke:var(--c1)}svg.chart .c2{stroke:var(--c2)}svg.chart .c3{stroke:var(--c3)}svg.chart .c4{stroke:var(--c4)}.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12.5px;color:var(--text-soft);font-family:var(--font-mono);padding:9px 8px 4px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:15px;height:3px;border-radius:2px;display:inline-block}.legend .l1{background:var(--c1)}.legend .l2{background:var(--c2)}.legend .l3{background:var(--c3)}.legend .l4{background:var(--c4)}figcaption{font-size:12.5px;color:var(--text-soft);margin-top:9px;padding-left:2px}figcaption b{color:var(--text);font-weight:500}.ref-list{list-style:none;padding:0;margin:14px 0;counter-reset:r}.ref-list li{position:relative;padding:11px 0 11px 34px;border-bottom:1px solid var(--border);font-size:13.5px;color:var(--text-soft);line-height:1.55}.ref-list li:before{counter-increment:r;content:"[" counter(r) "]";position:absolute;left:0;top:11px;font-family:var(--font-mono);font-size:11px;color:var(--text-soft)}.ref-list li b{color:var(--text);font-weight:500}.ref-list .src{font-style:italic}.rt{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;padding:1.5px 6px;border-radius:4px;margin-right:8px;font-weight:500;border:1px solid currentColor;vertical-align:1px}.rt.aes,.rt.ieee{color:var(--c2)}.rt.std{color:var(--good)}.rt.book{color:var(--mid)}.rt.pat{color:var(--bad)}.rt.app{color:var(--text-soft)}.author-block{margin:64px 0 0;border-top:1px solid var(--border);padding-top:18px;display:flex;flex-direction:column;gap:2px}.author-block .au-lbl{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft)}.author-block .au-name{font-size:18px;font-weight:700;color:var(--text);margin-top:2px}.author-block .au-role{font-size:13.5px;color:var(--text-soft)}.author-block .au-exp{font-family:var(--font-mono);font-size:11.5px;color:var(--text-soft);margin-top:2px}.revisions{margin:34px 0 0;border-top:1px solid var(--border);padding-top:18px}.revisions h4{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);margin:0 0 12px;font-weight:500}.rev-row{display:flex;gap:14px;font-size:13px;padding:6px 0;border-bottom:1px dashed var(--border)}.rev-row:last-child{border-bottom:none}.rev-v{font-family:var(--font-mono);color:var(--accent);font-weight:500;flex:0 0 46px}.rev-date{font-family:var(--font-mono);color:var(--text-soft);flex:0 0 92px}.rev-note{color:var(--text-soft)}@media(max-width:900px){.tb-toc{display:none}.tb{padding:1rem 1.1rem 3rem}}
