@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-thai-cyrillic-ext-400-normal-Dn6MWgci.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-cyrillic-ext-400-normal-BEjoQ6U0.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-thai-thai-400-normal-Bt1rR4gi.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-400-normal-DKc8V4lk.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-thai-latin-ext-400-normal-DBkYO1u-.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-ext-400-normal-n-X-g5Z4.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-thai-latin-400-normal-CwmoKdEh.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-400-normal-YXrLwNa7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-thai-cyrillic-ext-500-normal-Cm2I9ryc.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-cyrillic-ext-500-normal-Do1XVVIP.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-thai-thai-500-normal-BrMc1XKn.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-500-normal-BoHUoq0p.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-thai-latin-ext-500-normal-n470B0cW.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-ext-500-normal-DcylQI4B.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-thai-latin-500-normal-DQcnnbdd.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-500-normal-h5t7erDE.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-thai-cyrillic-ext-600-normal-BCRlenFg.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-cyrillic-ext-600-normal-BcmZofZJ.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-thai-thai-600-normal-DvfsyWAn.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-thai-600-normal-BOwfviun.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-thai-latin-ext-600-normal-BXI6PlF4.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-ext-600-normal-iH120vlL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-thai-latin-600-normal-BR-dhaTH.woff2) format("woff2"),url(/assets/ibm-plex-sans-thai-latin-600-normal-P_JjY83V.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-serif-thai-thai-400-normal-CvrP933u.woff2) format("woff2"),url(/assets/noto-serif-thai-thai-400-normal-B98Q1sHK.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-serif-thai-latin-ext-400-normal-BB1RY-JM.woff2) format("woff2"),url(/assets/noto-serif-thai-latin-ext-400-normal-BxN53HqO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-serif-thai-latin-400-normal-BVYgoRdi.woff2) format("woff2"),url(/assets/noto-serif-thai-latin-400-normal-BnSCagmU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-serif-thai-thai-600-normal-BPIYqBcd.woff2) format("woff2"),url(/assets/noto-serif-thai-thai-600-normal-Bi2iA5nV.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-serif-thai-latin-ext-600-normal-CCPw-m5N.woff2) format("woff2"),url(/assets/noto-serif-thai-latin-ext-600-normal-Bn5dVPRl.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-serif-thai-latin-600-normal-DrhQiPUG.woff2) format("woff2"),url(/assets/noto-serif-thai-latin-600-normal-B_GHqjz6.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-serif-thai-thai-700-normal-DasJixn8.woff2) format("woff2"),url(/assets/noto-serif-thai-thai-700-normal-CLQijqWF.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-serif-thai-latin-ext-700-normal-DX4j1cOA.woff2) format("woff2"),url(/assets/noto-serif-thai-latin-ext-700-normal-Dvnam3sG.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Noto Serif Thai";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-serif-thai-latin-700-normal-dflTGLoO.woff2) format("woff2"),url(/assets/noto-serif-thai-latin-700-normal-DDPBPVNp.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--desk: #0b0e14;--desk-2: #12151c;--desk-3: #1a1f29;--edge: #2c323e;--ui-title: #f0f4fa;--ui-text: #ced5e0;--ui-dim: #8b96a7;--accent: #3a96ff;--accent-hover: #5aa8ff;--pos: #00c88a;--neg: #f0626e;--warn: #f0ad4e;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--desk);color:var(--ui-text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border:1px solid transparent;border-radius:8px;font:500 15px/1 var(--font-ui);text-decoration:none;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;border-color:var(--edge);color:var(--ui-title)}.btn-ghost:hover{border-color:var(--ui-dim)}.btn-sm{height:32px;padding:0 12px;font-size:13px}.btn:disabled{opacity:.6;cursor:default}.chip{display:inline-block;padding:5px 11px;border:1px solid var(--edge);border-radius:999px;font-size:13px;color:var(--ui-text);white-space:nowrap}.chip-dev{border-color:#f0ad4e8c;color:var(--warn)}.notice{margin:0;padding:12px 16px;border:1px solid var(--edge);border-radius:8px;background:var(--desk-2);font-size:14px;line-height:1.65}.notice-warn{border-color:#f0ad4e80;color:#f5c77e}.loading{color:var(--ui-dim);padding:40px 0}.icon-btn{display:grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ui-text);text-decoration:none}.icon-btn:hover{background:var(--desk-3);color:var(--ui-title)}.page{min-height:100vh;display:flex;flex-direction:column}.page main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:0 24px}.site-header{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;max-width:1120px;margin:0 auto;padding:18px 24px}.brand{display:flex;align-items:center;gap:10px;color:var(--ui-title);font-weight:600;font-size:17px;text-decoration:none}.session{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.site-footer{width:100%;max-width:1120px;margin:48px auto 0;padding:28px 24px 44px;border-top:1px solid var(--edge);color:var(--ui-dim);font-size:13px;line-height:1.75}.site-footer p{margin:0 0 4px;max-width:72ch}.site-footer a{color:var(--ui-text)}.featured{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:64px;align-items:center;padding:44px 0 72px}.featured-cover{display:block}.featured h1,.book-main h1{margin:0;color:var(--ui-title);font-weight:600;line-height:1.2;font-size:clamp(34px,5vw,54px)}.featured-sub,.book-sub{margin:10px 0 22px;font-size:20px;line-height:1.5;color:var(--ui-text)}.blurb{max-width:62ch;line-height:1.8;font-size:16px}.blurb p{margin:0 0 .8em}.blurb strong{color:var(--ui-title);font-weight:600}.blurb ol,.blurb ul{padding-left:1.3em}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.shelf h2,.toc h2{margin:0 0 20px;font-size:20px;font-weight:600;color:var(--ui-title)}.shelf-row{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:36px 28px}.shelf-book{display:flex;flex-direction:column;gap:8px;color:inherit;text-decoration:none}.shelf-book .cover{margin-bottom:6px;transition:transform .2s ease}.shelf-book:hover .cover{transform:translateY(-4px)}.shelf-title{color:var(--ui-title);font-size:15px;line-height:1.4}.shelf-meta{color:var(--ui-dim);font-size:13px}.book-layout{display:grid;grid-template-columns:minmax(200px,300px) 1fr;gap:64px;padding-top:32px!important}.book-cover-col{position:sticky;top:24px;align-self:start}.book-sub{margin-bottom:6px}.book-meta{margin:0 0 26px;color:var(--ui-dim);font-size:14px}.book-access{margin:0 0 30px;display:grid;gap:14px}.book-access .actions{margin-top:0}.book-access .notice{max-width:480px}.toc{margin-top:44px}.toc ol{list-style:none;margin:0;padding:0}.toc li{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--edge)}.toc-n{color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}.toc-title{color:var(--ui-title);font-size:16px;text-decoration:none}a.toc-title:hover{color:var(--accent-hover)}.toc-sections{margin:4px 0 0;color:var(--ui-dim);font-size:13px;line-height:1.65}.empty{text-align:center;padding-top:80px!important}.empty h1{color:var(--ui-title)}.coupon{max-width:480px;padding:20px;border:1px solid var(--edge);border-radius:12px;background:var(--desk-2)}.coupon-label{display:flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--ui-title);font-weight:600}.coupon-row{display:flex;gap:10px}.coupon input{flex:1;min-width:0;height:50px;padding:0 14px;border:1px solid var(--edge);border-radius:8px;background:var(--desk);color:var(--ui-title);font:500 22px/1 var(--font-ui);letter-spacing:.06em;font-variant-numeric:tabular-nums}.coupon input::placeholder{color:#4a5262}.coupon input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #3a96ff40}.coupon input[aria-invalid]{border-color:var(--neg)}.coupon .btn{height:50px}.coupon-error{margin:10px 0 0;color:var(--neg);font-size:14px;line-height:1.6}.coupon-help{margin:12px 0 0;color:var(--ui-dim);font-size:13px;line-height:1.65}.cover{position:relative;width:100%;aspect-ratio:2 / 3;overflow:hidden;border-radius:3px 8px 8px 3px;background:var(--c-bg);color:var(--c-fg);container-type:inline-size;box-shadow:inset 7px 0 #00000047,inset 9px 0 #ffffff0f,0 0 0 1px #ffffff0d,0 22px 34px -14px #000000d9}.cover-sm{max-width:190px}.cover-md{max-width:240px}.cover-lg{max-width:320px}.cover-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;padding:10% 10% 8% 15%}.cover-brand{display:flex;align-items:center;gap:.45em;font-size:max(9px,6cqw);font-weight:600;opacity:.9}.cover-brand img{width:1.7em;height:1.7em}.cover-title{margin-top:20%;font-size:12.5cqw;font-weight:600;line-height:1.22}.cover-sub{margin-top:.7em;font-size:max(8px,5.6cqw);line-height:1.5;opacity:.78}.cover-ramp{margin-top:auto;display:flex;align-items:flex-end;gap:4%;height:15%}.cover-ramp i{flex:1;border-radius:1px}.cover-foot{display:flex;justify-content:space-between;gap:.5em;margin-top:7%;padding-top:5%;border-top:1px solid var(--c-accent);font-size:max(8px,4.6cqw);color:var(--c-accent)}.cover.is-planned .cover-face{filter:saturate(.4);opacity:.72}.cover-ribbon{position:absolute;top:8%;right:8%;padding:.25em .8em;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:#00000080;color:#f0f4fa;font-size:max(10px,5cqw)}.reader{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;grid-template-rows:56px minmax(0,1fr) 56px;background:var(--desk)}.reader-bar{display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--desk-2);min-width:0}.reader-top{border-bottom:1px solid var(--edge)}.reader-bottom{border-top:1px solid var(--edge)}.reader-title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}.reader-book{font-size:12px;color:var(--ui-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader-ch{font-size:14px;color:var(--ui-title);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader-tools{display:flex;align-items:center;gap:8px}.seg{display:flex;border:1px solid var(--edge);border-radius:8px;overflow:hidden}.seg button{display:grid;place-items:center;height:36px;min-width:38px;padding:0 6px;border:0;background:transparent;color:var(--ui-text)}.seg button+button{border-left:1px solid var(--edge)}.seg button:hover:not(:disabled){background:var(--desk-3)}.seg button:disabled{opacity:.35;cursor:default}.aa-sm{font-size:13px}.aa-lg{font-size:19px}.swatch{min-width:34px!important}.swatch:before{content:"";width:18px;height:18px;border-radius:50%;border:1px solid rgba(255,255,255,.25)}.swatch-paper:before{background:#f7f6f2}.swatch-sepia:before{background:#f2e8d5}.swatch-night:before{background:#171b22}.swatch[aria-checked=true]:before{box-shadow:0 0 0 2px var(--desk-2),0 0 0 4px var(--accent)}.desk{display:flex;align-items:center;justify-content:center;gap:12px;min-height:0;overflow:hidden}.turn{display:grid;place-items:center;width:52px;height:120px;padding:0;border:0;border-radius:12px;background:transparent;color:var(--ui-dim)}.turn:hover:not(:disabled){background:var(--desk-3);color:var(--ui-title)}.turn:disabled{opacity:.2;cursor:default}.reader-error,.reader .loading{padding:40px 0;color:var(--ink-soft);font-family:var(--font-ui);text-align:center}.reader-missing{display:grid;place-items:center;align-content:center;gap:16px;min-height:100vh}.pos{color:var(--ui-dim);font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}.progress{flex:1;min-width:60px;accent-color:var(--accent)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#05070a99}.toc-drawer{position:fixed;top:0;bottom:0;left:0;width:min(390px,88vw);overflow-y:auto;padding:14px 16px 32px;background:var(--desk-2);border-right:1px solid var(--edge);animation:drawer-in .22s ease-out}@keyframes drawer-in{0%{transform:translate(-24px);opacity:0}}.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.drawer-head h2{margin:0;font-size:18px;color:var(--ui-title)}.drawer-list,.drawer-list ul{list-style:none;margin:0;padding:0}.drawer-list>li{border-top:1px solid var(--edge)}.drawer-list button{display:block;width:100%;padding:10px 8px;border:0;border-radius:6px;background:transparent;color:var(--ui-text);text-align:left;line-height:1.5}.drawer-list button:hover{background:var(--desk-3)}.drawer-ch{display:grid!important;grid-template-columns:30px 1fr;gap:8px}.is-current>.drawer-ch{color:var(--ui-title);font-weight:600}.drawer-list ul{padding:0 0 8px 38px}.drawer-list ul button{padding:6px 8px;font-size:14px;color:var(--ui-dim)}@media (max-width: 760px){.featured,.book-layout{grid-template-columns:1fr;gap:28px}.featured{padding-top:16px}.featured-cover,.book-cover-col{position:static;max-width:210px}.site-header{padding:14px 16px}.page main{padding:0 16px}.shelf-row{grid-template-columns:repeat(2,1fr);gap:28px 18px}}@media (max-width: 640px){.reader-book{display:none}.reader-bar{gap:6px;padding:0 6px}.reader-tools{gap:4px}.seg button{min-width:32px}.swatch{min-width:28px!important}}@media (prefers-reduced-motion: reduce){.shelf-book .cover,.toc-drawer{transition:none;animation:none}}:root,[data-theme=paper]{--paper: #f7f6f2;--paper-2: #edece6;--ink: #1c2330;--ink-soft: #545e70;--rule: #d6d8d4;--link: #1f5fc4;--c-note: #2a6ad2;--c-tip: #0b8a5f;--c-warn: #a86d12;--c-danger: #c42f3d;--spine: rgba(20, 24, 32, .13);--font-book: "Noto Serif Thai", "IBM Plex Sans Thai", serif;--font-ui: "IBM Plex Sans Thai", system-ui, sans-serif}[data-theme=sepia]{--paper: #f2e8d5;--paper-2: #e8dbc2;--ink: #36291c;--ink-soft: #6c5b47;--rule: #d8c8aa;--link: #8a4b12;--c-note: #2f64a8;--c-tip: #3c7a3a;--c-warn: #9a5d0c;--c-danger: #b0332c;--spine: rgba(70, 44, 10, .16)}[data-theme=night]{--paper: #171b22;--paper-2: #1f252e;--ink: #d3d9e2;--ink-soft: #97a1b1;--rule: #323946;--link: #7db5ff;--c-note: #6aa8ff;--c-tip: #3dd6a0;--c-warn: #f0b85e;--c-danger: #ff7b86;--spine: rgba(0, 0, 0, .45)}.ch-head{margin:0 0 1.5em;break-after:avoid;font-size:calc(17.5px * var(--fs, 1))}.ch-no{font-family:var(--font-ui);font-weight:600;font-size:.82em;color:var(--c-note)}.ch-head h1{font-family:var(--font-book);font-weight:700;font-size:1.72em;line-height:1.38;margin:.15em 0 0;color:var(--ink)}.ch-head:after{content:"";display:block;width:72px;height:5px;margin-top:.9em;border-radius:3px;background:linear-gradient(90deg,#32cd32 0,#32cd32 12.5%,#7ed321 0,#7ed321 25%,#b8d200 0,#b8d200 37.5%,#e6c700 0,#e6c700 50%,#f5a300 0,#f5a300 62.5%,#f57c00 0,#f57c00 75%,#f25a1d 0,#f25a1d 87.5%,#ff4500 0)}.prose{font-family:var(--font-book);font-size:calc(17.5px * var(--fs, 1));line-height:1.86;color:var(--ink);text-align:start;overflow-wrap:break-word}.prose p{margin:0 0 .85em;orphans:2;widows:2}.prose h2{font-family:var(--font-ui);font-weight:600;font-size:1.2em;line-height:1.45;margin:1.05em 0 .5em;padding-top:.3em;color:var(--ink);break-after:avoid}.prose h3{font-family:var(--font-ui);font-weight:600;font-size:1.02em;margin:.85em 0 .35em;padding-top:.25em;break-after:avoid}.prose h2+*,.prose h3+*{break-before:avoid}.prose strong{font-weight:700}.prose ul,.prose ol{margin:0 0 .9em;padding-left:1.35em}.prose li{margin:.18em 0}.prose a{color:var(--link);text-underline-offset:3px}.prose code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.84em;background:var(--paper-2);padding:.05em .32em;border-radius:4px}.prose pre{break-inside:avoid;background:var(--paper-2);padding:.7em .9em;border-radius:6px;font-size:.8em;line-height:1.5;white-space:pre-wrap}.prose pre code{background:none;padding:0}.prose blockquote{margin:.6em 0 1em;padding-left:1em;border-left:2px solid var(--rule);color:var(--ink-soft)}.prose hr{border:0;border-top:1px solid var(--rule);margin:1.2em 0}.prose .table-wrap{margin:.4em 0 1.1em;break-inside:avoid}.prose table{width:100%;border-collapse:collapse;font-family:var(--font-ui);font-size:.76em;line-height:1.5;font-variant-numeric:tabular-nums}.prose th,.prose td{padding:.38em .5em;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}.prose th{font-weight:600;background:var(--paper-2);border-bottom-color:var(--ink-soft)}.prose .callout{--c: var(--c-note);break-inside:avoid;margin:.6em 0 1.15em;padding:.65em .95em .15em;border-left:3px solid var(--c);border-radius:0 6px 6px 0;background:color-mix(in srgb,var(--c) 8%,var(--paper));font-size:.95em}.prose .callout p{margin-bottom:.6em}.prose .callout-title{font-family:var(--font-ui);font-weight:600;font-size:.9em;color:var(--c);margin-bottom:.15em}.prose .callout-tip{--c: var(--c-tip)}.prose .callout-warning,.prose .callout-caution{--c: var(--c-warn)}.prose .callout-danger{--c: var(--c-danger)}.prose .formula{break-inside:avoid;margin:.4em 0 1.05em;padding:.6em .9em;border:1px solid var(--rule);border-radius:8px;background:var(--paper-2);font-family:var(--font-ui);font-weight:500;font-size:.94em;line-height:1.75;text-align:center}.prose figure{break-inside:avoid;margin:.5em 0 1.1em;text-align:center}.prose figure img{max-width:100%;max-height:calc(var(--page-h, 100vh) * .78);object-fit:contain;border-radius:6px}.prose figcaption{font-family:var(--font-ui);font-size:.76em;line-height:1.5;color:var(--ink-soft);margin-top:.45em}.prose .flow{break-inside:avoid;display:grid;gap:.55em;margin:.6em 0 1.15em .4em;padding-left:1.1em;border-left:2px solid var(--rule)}.prose .flow-step{position:relative;font-size:.92em;line-height:1.6}.prose .flow-step:before{content:"";position:absolute;left:calc(-1.1em - 7px);top:.5em;width:8px;height:8px;border-radius:50%;background:var(--paper);border:2px solid var(--c-note)}.prose .flow-step b{display:block;font-family:var(--font-ui);font-weight:600}.prose .flow-step span{color:var(--ink-soft)}.prose .board-sketch{break-inside:avoid;margin:.5em 0 1.1em;padding:.6em .75em;border:1px solid #2c323e;border-radius:8px;background:#12151c;color:#ced5e0;font-family:var(--font-ui);font-size:.7em;line-height:1.55;font-variant-numeric:tabular-nums}.prose .bs-head{display:flex;justify-content:space-between;gap:.5em;padding-bottom:.35em;margin-bottom:.3em;border-bottom:1px solid #2c323e;color:#f0f4fa;font-weight:600}.prose .bs-row{display:grid;grid-template-columns:1.7fr repeat(5,1fr);gap:.3em;padding:.12em 0}.prose .bs-cols{color:#7a8596}.prose .bs-buy{color:#00c88a}.prose .bs-sell{color:#f0626e}.prose .bs-warn{color:#f2d34f}.prose .bs-dim{color:#7a8596}.prose .bs-foot{margin-top:.35em;padding-top:.35em;border-top:1px solid #2c323e}.ch-next,.ch-end{break-inside:avoid;margin-top:2em;padding-top:.8em;border-top:1px solid var(--rule);font-family:var(--font-ui);font-size:calc(15px * var(--fs, 1));color:var(--ink-soft)}.ch-next span{display:block;font-size:.85em}.ch-next a{color:var(--link);font-weight:600;text-decoration:none}.stage{position:relative;flex:none}.book{position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(var(--shift, 0px));transition:transform .5s cubic-bezier(.22,.7,.2,1);perspective:2800px;touch-action:pan-y pinch-zoom}.book.is-flipping{transition:none;user-select:none;-webkit-user-select:none}.page-slot{position:absolute;top:0;width:var(--page-w);height:100%;z-index:1;box-shadow:0 34px 60px -26px #000c}.face{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--paper);color:var(--ink)}.face.side-left:not(.face-cover):not(.face-back):after,.face.side-right:not(.face-cover):not(.face-back):after,.face.side-single:not(.face-cover):not(.face-back):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.face.side-left:after{background:linear-gradient(to left,var(--spine),transparent 12%)}.face.side-right:after,.face.side-single:after{background:linear-gradient(to right,var(--spine),transparent 12%)}.face.side-left{border-radius:3px 0 0 3px}.face.side-right,.face.side-single{border-radius:0 3px 3px 0}.stack{position:absolute;top:3px;bottom:3px;z-index:0;background:repeating-linear-gradient(90deg,var(--paper) 0 1px,var(--rule) 1px 2px);box-shadow:0 30px 50px -26px #000000b3}.stack-left{right:100%;border-radius:3px 0 0 3px}.stack-right{left:100%;border-radius:0 3px 3px 0}.leaf{position:absolute;top:0;width:var(--page-w);height:100%;z-index:3;transform-style:preserve-3d;transform:rotateY(var(--a, 0deg))}.leaf-right,.leaf-single{transform-origin:left center}.leaf-left{transform-origin:right center}.leaf-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}.leaf-back{transform:rotateY(180deg)}.leaf-face>.face{box-shadow:0 0 calc(var(--s, 0) * 40px) rgba(0,0,0,calc(var(--s, 0) * .35))}.leaf-shade{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:var(--s, 0)}.leaf-right .leaf-front .leaf-shade,.leaf-left .leaf-back .leaf-shade,.leaf-single .leaf-shade{background:linear-gradient(to right,#0000003d,#0000 32%,#ffffff1f 68%,#00000029)}.leaf-right .leaf-back .leaf-shade,.leaf-left .leaf-front .leaf-shade{background:linear-gradient(to left,#0000003d,#0000 32%,#ffffff1f 68%,#00000029)}.under-shade{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.page-slot.right .under-shade{opacity:var(--ur, 0);background:linear-gradient(to right,#0000003d,#0000 38%)}.page-slot.left .under-shade{opacity:var(--ul, 0);background:linear-gradient(to left,#0000003d,#0000 38%)}.face-verso{background:var(--paper-2)}.face-cover{background:var(--c-bg);border-radius:2px 7px 7px 2px}.cover-fill{max-width:none;height:100%;aspect-ratio:auto;border-radius:2px 7px 7px 2px;box-shadow:inset 9px 0 #0000004d,inset 11px 0 #ffffff0f}.face-back{background:var(--c-bg);color:var(--c-fg);border-radius:7px 2px 2px 7px;box-shadow:inset -9px 0 #0000004d,inset -11px 0 #ffffff0f}.back-inner{position:absolute;top:12%;right:14%;bottom:9%;left:11%;display:flex;flex-direction:column;gap:1.2em;font-family:var(--font-ui);container-type:inline-size}.back-inner img{width:44px;height:44px}.back-title{font-size:max(18px,7cqw);font-weight:600;line-height:1.3}.back-blurb{font-size:max(12px,3.5cqw);line-height:1.75;opacity:.85}.back-blurb p{margin:0}.back-ramp{display:flex;gap:3%;height:6px;margin-top:auto}.back-ramp i{flex:1;border-radius:1px}.back-foot{font-size:max(11px,3cqw);color:var(--c-accent)}.face-endpaper{background-color:var(--c-bg);background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.035) 0 2px,transparent 2px 16px),repeating-linear-gradient(-45deg,rgba(255,255,255,.035) 0 2px,transparent 2px 16px)}.title-inner{position:absolute;top:17%;right:12%;bottom:11%;left:12%;display:flex;flex-direction:column;align-items:center;text-align:center;font-family:var(--font-ui)}.face-title h1{margin:.9em 0 .35em;font-family:var(--font-book);font-weight:700;font-size:calc(var(--page-w) * .074);line-height:1.32;color:var(--ink)}.title-sub{margin:0;font-size:calc(var(--page-w) * .031);line-height:1.6;color:var(--ink-soft)}.title-ramp{width:72px;height:5px;margin:1.8em 0;border-radius:3px;background:linear-gradient(90deg,#32cd32 0,#32cd32 12.5%,#7ed321 0,#7ed321 25%,#b8d200 0,#b8d200 37.5%,#e6c700 0,#e6c700 50%,#f5a300 0,#f5a300 62.5%,#f57c00 0,#f57c00 75%,#f25a1d 0,#f25a1d 87.5%,#ff4500 0)}.title-author{margin:auto 0 0;font-size:14px;color:var(--ink-soft)}.copyright-inner{height:100%;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;font-family:var(--font-ui);font-size:12.5px;line-height:1.7;color:var(--ink-soft)}.copyright-title{margin:0 0 .6em;font-size:15px;font-weight:600;color:var(--ink)}.copyright-blurb p{margin:0 0 .6em}.copyright-blurb strong{color:var(--ink)}.copyright-risk{margin:.4em 0 .8em;padding:.5em .8em;border-left:3px solid var(--c-danger);background:color-mix(in srgb,var(--c-danger) 7%,var(--paper));color:var(--ink)}.copyright-risk b{color:var(--c-danger)}.copyright-line{margin:0}.face-view{position:relative;overflow:hidden}.strip{column-fill:auto}.run-head,.folio{position:absolute;font-family:var(--font-ui);font-size:11.5px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-head{top:calc(var(--pad) * .55);left:var(--pad);right:var(--pad)}.side-right .run-head{text-align:right}.side-single .run-head{text-align:center}.folio{bottom:calc(var(--pad) * .5);font-variant-numeric:tabular-nums}.side-left .folio{left:var(--pad)}.side-right .folio{right:var(--pad)}.side-single .folio{left:50%;transform:translate(-50%)}.book-toc{list-style:none;margin:0;padding:0;font-family:var(--font-ui);font-size:calc(15px * var(--fs, 1))}.book-toc li{break-inside:avoid}.book-toc a{display:flex;align-items:baseline;gap:.5em;padding:.5em 0;border-bottom:1px solid var(--rule);color:var(--ink);text-decoration:none;line-height:1.5}.book-toc a:hover .toc-name{color:var(--link)}.toc-no{flex:none;width:1.6em;color:var(--c-note);font-weight:600;font-variant-numeric:tabular-nums}.toc-dots{flex:1;min-width:1em;border-bottom:1px dotted var(--ink-soft);opacity:.45;transform:translateY(-.3em)}.toc-pg{flex:none;color:var(--ink-soft);font-variant-numeric:tabular-nums}.measure{position:absolute;top:0;left:-100000px;visibility:hidden;pointer-events:none}.drawer-pg{margin-left:auto;padding-left:12px;color:var(--ui-dim);font-variant-numeric:tabular-nums}.drawer-list ul button{display:flex!important;gap:8px}.drawer-ch{grid-template-columns:30px 1fr auto!important}@media (prefers-reduced-motion: reduce){.book{transition:none}}
