@charset "UTF-8";:root{--gray-100:#f6f6f4;--gray-200:#dcdcd8;--gray-500:#6b6b6b;--color-link:#0038ff;--color-visited-link:#0038ff;--body-background:#ffffff;--body-font-color:#111111;--icon-filter:none}/*!modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize*/*,::before,::after{box-sizing:border-box}html{font-family:system-ui,segoe ui,Roboto,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji;line-height:1.15;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,liberation mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:initial}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}.flex{display:flex}.flex-auto{flex:auto}.flex-even{flex:1 1}.flex-wrap{flex-wrap:wrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.align-center{align-items:center}.mx-auto{margin:0 auto}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-small{font-size:.875em}.hidden{display:none}input.toggle{height:0;width:0;overflow:hidden;opacity:0;position:absolute}.clearfix::after{content:"";display:table;clear:both}html{font-size:16px;scroll-behavior:smooth;touch-action:manipulation;scrollbar-gutter:stable}body{min-width:20rem;color:var(--body-font-color);background:var(--body-background);font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-weight:400}a{text-decoration:none}a[href]{color:var(--color-link)}img{vertical-align:baseline}:focus{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{position:relative}aside nav ul a,aside nav ul span{padding:.5em 0;display:block}aside nav ul a:hover{opacity:.5}aside nav ul ul{padding-inline-start:1rem}ul.pagination{display:flex;justify-content:center;list-style-type:none;padding-inline-start:0}ul.pagination .page-item a{padding:1rem}.container{max-width:90rem;margin:0 auto}.book-icon{filter:var(--icon-filter)}a .book-icon{height:1em;width:1em}a .book-icon:first-child{margin-inline-end:.5rem}a .book-icon:last-child{margin-inline-start:.5rem}.book-brand{margin-top:0;margin-bottom:1rem}.book-brand img{height:1.5em;width:1.5em;margin-inline-end:.5rem}.book-menu{flex:0 0 16rem;font-size:.875rem}.book-menu .book-menu-content{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-menu a,.book-menu label{color:inherit;cursor:pointer;word-wrap:break-word}.book-menu a.active{color:var(--color-link)}.book-menu input.toggle+label+ul{display:none}.book-menu input.toggle:checked+label+ul{display:block}.book-menu input.toggle+label::after{content:"▸";align-self:center;transition:transform .1s ease-in-out}.book-menu input.toggle:checked+label::after{transform:rotate(90deg)}body[dir=rtl] .book-menu input.toggle+label::after{content:"◂"}body[dir=rtl] .book-menu input.toggle:checked+label::after{transform:rotate(-90deg)}.book-section-flat{margin:1rem 0}.book-section-flat>a,.book-section-flat>span,.book-section-flat>label{font-weight:bolder}.book-section-flat>ul{padding-inline-start:0}.book-page{min-width:20rem;flex-grow:1;padding:1rem}.book-post{margin-bottom:4rem}.book-post .book-post-date img{height:1em;width:1em;margin-inline-end:.5em}.book-post .book-post-content>:first-child{margin-top:1rem}.book-header{display:none;margin-bottom:1rem}.book-header label{line-height:0}.book-header h3{overflow:hidden;text-overflow:ellipsis;margin:0 1rem}.book-header img.book-icon{height:1.5em;width:1.5em}.book-header>ul{margin:0;padding:0 1rem;display:flex;gap:1rem;justify-content:end}.book-header>ul li{display:inline-block}.book-kind-home .book-header{display:block}.book-search{position:relative;margin:.5rem 0;border-bottom:1px solid transparent}.book-search input{width:100%;padding:.5rem;border:0;border-radius:0;background:var(--gray-100);color:var(--body-font-color)}.book-search input:required+.book-search-spinner{display:block}.book-search .book-search-spinner{position:absolute;top:0;margin:.5rem;margin-inline-start:calc(100% - 1.5rem);width:1rem;height:1rem;border:1px solid transparent;border-top-color:var(--body-font-color);border-radius:50%;animation:spin 1s ease infinite}@keyframes spin{100%{transform:rotate(360deg)}}.book-search ul a{padding-bottom:0}.book-search small{opacity:.5}.book-toc{flex:0 0 16rem;font-size:.75rem}.book-toc .book-toc-content{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-toc img{height:1em;width:1em}.book-toc nav>ul>li:first-child{margin-top:0}.book-footer{padding-top:1rem;font-size:.875rem}.book-footer a{margin:.5rem 0}.book-comments{margin-top:1rem}.book-languages{margin-bottom:1rem}.book-languages span{padding:0}.book-languages ul{padding-inline-start:1.5em}.book-menu-content,.book-toc-content,.book-page,.book-header aside,.markdown{transition:.2s ease-in-out;transition-property:transform,margin,opacity,visibility;will-change:transform,margin,opacity}@media screen and (max-width:56rem){#menu-control,#toc-control{display:inline}.book-menu{visibility:hidden;margin-inline-start:-16rem;z-index:1}.book-toc{display:none}.book-header{display:block}#menu-control:focus~main label[for=menu-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#menu-control:checked~main .book-menu{visibility:initial}#menu-control:checked~main .book-menu .book-menu-content{transform:translateX(16rem);box-shadow:0 0 .5rem rgba(0,0,0,.1)}#menu-control:checked~main .book-page{opacity:.25}#menu-control:checked~main .book-menu-overlay{display:block;position:absolute;top:0;bottom:0;left:0;right:0}#toc-control:focus~main label[for=toc-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#toc-control:checked~main .book-header aside{display:block}body[dir=rtl] #menu-control:checked~main .book-menu .book-menu-content{transform:translateX(-16rem)}}@media screen and (min-width:90rem){.book-page,.book-menu .book-menu-content,.book-toc .book-toc-content{padding:2rem 1rem}}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/roboto-v47-normal-math-400.woff2)format("woff2");unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/roboto-v47-normal-symbols-400.woff2)format("woff2");unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/roboto-v47-normal-latin-ext-400.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:roboto;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/roboto-v47-normal-latin-400.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/roboto-v47-normal-math-700.woff2)format("woff2");unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/roboto-v47-normal-symbols-700.woff2)format("woff2");unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/roboto-v47-normal-latin-ext-700.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:roboto;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/roboto-v47-normal-latin-700.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/roboto-mono-v30-normal-latin-ext-400.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/roboto-mono-v30-normal-latin-400.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:roboto mono;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/roboto-mono-v30-normal-latin-ext-700.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:roboto mono;font-style:normal;font-weight:700;font-display:swap;src:url(./fonts/roboto-mono-v30-normal-latin-700.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:noto sans jp;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/NotoSansCJKjp-Regular.otf)format("opentype")}@font-face{font-family:noto sans thai;font-style:normal;font-weight:400;font-display:swap;src:url(./fonts/NotoSansThai-Regular.ttf)format("truetype")}body{font-family:roboto,noto sans jp,noto sans thai,sans-serif}code{font-family:roboto mono,monospace}@media print{.book-menu,.book-footer,.book-toc{display:none}.book-header,.book-header aside{display:block}main{display:block !important}}.markdown{line-height:1.6}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:400;line-height:1;margin-top:1.5em;margin-bottom:1rem}.markdown h1 a.anchor,.markdown h2 a.anchor,.markdown h3 a.anchor,.markdown h4 a.anchor,.markdown h5 a.anchor,.markdown h6 a.anchor{opacity:0;font-size:.75em;vertical-align:middle;text-decoration:none}.markdown h1:hover a.anchor,.markdown h1 a.anchor:focus,.markdown h2:hover a.anchor,.markdown h2 a.anchor:focus,.markdown h3:hover a.anchor,.markdown h3 a.anchor:focus,.markdown h4:hover a.anchor,.markdown h4 a.anchor:focus,.markdown h5:hover a.anchor,.markdown h5 a.anchor:focus,.markdown h6:hover a.anchor,.markdown h6 a.anchor:focus{opacity:initial}.markdown h1{font-size:2rem}.markdown h2{font-size:1.5rem}.markdown h3{font-size:1.25rem}.markdown h4{font-size:1.125rem}.markdown h5{font-size:1rem}.markdown h6{font-size:.875rem}.markdown b,.markdown optgroup,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a[href]:hover{text-decoration:underline}.markdown a[href]:visited{color:var(--color-visited-link)}.markdown img{max-width:100%;height:auto}.markdown code{direction:ltr;unicode-bidi:embed;padding:0 .25rem;background:var(--gray-200);border-radius:0;font-size:.875em}.markdown pre{direction:ltr;unicode-bidi:embed;padding:1rem;background:var(--gray-100);border-radius:0;overflow-x:auto}.markdown pre code{padding:0;background:0 0}.markdown p{word-wrap:break-word}.markdown blockquote{margin:1rem 0;padding:.5rem 1rem .5rem .75rem;border-inline-start:.25rem solid var(--gray-200);border-radius:0}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin-top:1rem;margin-bottom:1rem}.markdown table tr th,.markdown table tr td{padding:.5rem 1rem;border:1px solid var(--gray-200);text-align:start}.markdown table tr:nth-child(2n){background:var(--gray-100)}.markdown hr{height:1px;border:none;background:var(--gray-200)}.markdown ul,.markdown ol{padding-inline-start:2rem;word-wrap:break-word}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-inline-start:0;margin-bottom:1rem}.markdown .highlight{direction:ltr;unicode-bidi:embed;border-radius:0}.markdown .highlight table tr td pre code>span{display:flex}.markdown .highlight table tr td:nth-child(1) pre{margin:0;padding-inline-end:0}.markdown .highlight table tr td:nth-child(2) pre{margin:0;padding-inline-start:0}.markdown details{padding:1rem;border:1px solid var(--gray-200);border-radius:0}.markdown details summary{line-height:1;padding:1rem;margin:-1rem;cursor:pointer;list-style:none}.markdown details summary::before{content:"▸";display:inline-block;margin-inline-end:.5rem;transition:transform .1s ease-in-out}.markdown details[open] summary{margin-bottom:0}.markdown details[open] summary::before{transform:rotate(90deg)}.markdown figure{margin:1rem 0}.markdown figure figcaption p{margin-top:0}.markdown-inner>:first-child,.markdown .book-steps>ol>li>:first-child{margin-top:0}.markdown-inner>:last-child,.markdown .book-steps>ol>li>:last-child{margin-bottom:0}.markdown .book-expand{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:0;overflow:hidden}.markdown .book-expand .book-expand-head{background:var(--gray-100);padding:.5rem 1rem;cursor:pointer}.markdown .book-expand .book-expand-content{display:none;padding:1rem}.markdown .book-expand input[type=checkbox]:checked+.book-expand-content{display:block}.markdown .book-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:0;overflow:hidden;display:flex;flex-wrap:wrap}.markdown .book-tabs label{display:inline-block;padding:.5rem 1rem;border-bottom:1px transparent;cursor:pointer}.markdown .book-tabs .book-tabs-content{order:999;width:100%;border-top:1px solid var(--gray-100);padding:1rem;display:none}.markdown .book-tabs input[type=radio]:checked+label{border-bottom:1px solid var(--color-link)}.markdown .book-tabs input[type=radio]:checked+label+.book-tabs-content{display:block}.markdown .book-tabs input[type=radio]:focus+label{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}.markdown .book-columns{gap:1rem}.markdown .book-columns>div{margin:1rem 0;min-width:13.2rem}.markdown .book-columns>ul{list-style:none;display:flex;padding:0;flex-wrap:wrap;gap:1rem}.markdown .book-columns>ul>li{flex:1 1;min-width:13.2rem}.markdown a.book-btn[href]{display:inline-block;font-size:.875rem;color:var(--color-link);line-height:2rem;padding:0 1rem;border:1px solid var(--color-link);border-radius:0;cursor:pointer}.markdown a.book-btn[href]:hover{text-decoration:none}.markdown .book-hint.default{border-color:#64748b;background-color:rgba(100,116,139,.1)}.markdown .book-hint.info{border-color:#4486dd;background-color:rgba(68,134,221,.1)}.markdown .book-hint.success{border-color:#3bad3b;background-color:rgba(59,173,59,.1)}.markdown .book-hint.warning{border-color:#f59e42;background-color:rgba(245,158,66,.1)}.markdown .book-hint.danger{border-color:#d84747;background-color:rgba(216,71,71,.1)}.markdown .book-hint.note{border-color:#4486dd;background-color:rgba(68,134,221,.1)}.markdown .book-hint.tip{border-color:#3bad3b;background-color:rgba(59,173,59,.1)}.markdown .book-hint.important{border-color:#8144dd;background-color:rgba(129,68,221,.1)}.markdown .book-hint.caution{border-color:#d84747;background-color:rgba(216,71,71,.1)}.markdown .book-badge{display:inline-block;font-size:.875rem;vertical-align:middle;border-radius:0;overflow:hidden;text-wrap:nowrap;color:var(--body-font-color)}.markdown .book-badge span{display:inline-block;padding:0 .5rem}.markdown .book-badge span.book-badge-title{--background-opacity:0.1}.markdown .book-badge span.book-badge-value{--background-opacity:1;color:var(--body-background)}.markdown .book-badge.default span{background-color:rgba(100,116,139,var(--background-opacity))}.markdown .book-badge.info span{background-color:rgba(68,134,221,var(--background-opacity))}.markdown .book-badge.success span{background-color:rgba(59,173,59,var(--background-opacity))}.markdown .book-badge.warning span{background-color:rgba(245,158,66,var(--background-opacity))}.markdown .book-badge.danger span{background-color:rgba(216,71,71,var(--background-opacity))}.markdown .book-badge.note span{background-color:rgba(68,134,221,var(--background-opacity))}.markdown .book-badge.tip span{background-color:rgba(59,173,59,var(--background-opacity))}.markdown .book-badge.important span{background-color:rgba(129,68,221,var(--background-opacity))}.markdown .book-badge.caution span{background-color:rgba(216,71,71,var(--background-opacity))}.markdown .book-steps>ol{counter-reset:steps;list-style:none;padding-inline-start:1.25rem;margin-top:2rem}.markdown .book-steps>ol>li::before{content:counter(steps);counter-increment:steps;position:absolute;display:flex;justify-content:center;left:.5rem;height:1.5rem;width:1.5rem;padding:.25rem;border-radius:.5rem;white-space:nowrap;line-height:1rem;color:var(--body-background);background:var(--gray-500);outline:.25rem solid var(--body-background)}.markdown .book-steps>ol>li{border-inline-start:1px solid var(--gray-500);padding-inline-start:3rem;padding-bottom:2rem}.markdown .book-steps>ol>li:last-child{border:0}.markdown .book-card{display:block;overflow:hidden;height:100%;border-radius:0;border:1px solid var(--gray-200)}.markdown .book-card[href]:hover{text-decoration:none;background:var(--gray-100)}.markdown .book-card[href]:visited{color:var(--body-font-color)}.markdown .book-card img{display:block;object-fit:contain;aspect-ratio:4/3;object-fit:cover}.markdown .book-card .markdown-inner,.markdown .book-card .book-steps>ol>li{padding:1rem}.markdown .book-hero{min-height:24rem;align-content:center}.markdown .book-hero h1{font-size:3em}:root{--bg:#ffffff;--surface:#ffffff;--elev:#f6f6f4;--text:#111111;--muted:#6b6b6b;--link:#0038ff;--link-hover:#0027b3;--brand:#0038ff;--accent:#111111;--accent-2:#0a7a4a;--yellow:#b45309;--border:#dcdcd8;--rule:#111111;--ring:#0038ff;--radius:0;--radius-lg:0;--shadow-sm:none;--shadow-md:none;--shadow-pop:none;--fs-0:clamp(.95rem, .9rem + .25vw, 1.02rem);--fs-1:clamp(1.05rem, 1.0rem + .4vw, 1.18rem);--fs-2:clamp(1.35rem, 1.15rem + .9vw, 1.6rem);--fs-3:clamp(1.9rem, 1.4rem + 1.8vw, 2.6rem);--mono:'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}.skip-link{position:absolute;top:-100%;left:1rem;z-index:999;padding:.5rem 1rem;background:var(--brand);color:#fff;font-weight:700;text-decoration:none}.skip-link:focus{top:.5rem}html{scroll-behavior:smooth}body{font-size:var(--fs-0);line-height:1.9;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:rgba(0,56,255,.14)}.section-children__meta,.section-children__count,.page-title-block__progress,.section-children__progress,.read-toggle__btn,.viz-metric__label,.viz-slider-label,.viz-cm-header,.viz-container::before,.audience-note__label,.audience-badge,.difficulty-badge,.share-bar__label,.site-footer__bottom,.site-footer__heading,.site-footer__tagline,.breadcrumbs,.meta-item,.book-article th,.refnote__title,.summary-box__title,.lesson-block__title,.page-title-block__kicker,.site-head__nav a,.site-head__util a,.book-article h4{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase}.book-article a{color:var(--link);text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.2em;text-decoration-color:rgba(0,56,255,.35);transition:color .15s ease,text-decoration-color .15s ease}.book-article a:hover{color:var(--link-hover);text-decoration-color:var(--link-hover)}.book-article h1{font-size:var(--fs-3);font-weight:900;letter-spacing:.01em;line-height:1.3;color:var(--text);margin-top:0;margin-bottom:1.2rem;padding-bottom:0;border-bottom:0}.book-article h2{font-size:var(--fs-2);font-weight:900;letter-spacing:.01em;margin-top:3rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule);color:var(--text)}.book-article h3{font-size:var(--fs-1);font-weight:800;margin-top:2rem;margin-bottom:.6rem;color:var(--text)}.book-article h4{font-weight:700;margin-top:1.6rem;margin-bottom:.4rem;color:var(--muted);font-size:.8rem}.site-head{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--rule)}.site-head__inner{max-width:90rem;margin:0 auto;display:flex;align-items:center;gap:1.6rem;min-height:3.4rem;padding:0 1rem}.site-head__brand{font-weight:900;font-size:1.05rem;letter-spacing:.01em;color:var(--text) !important;text-decoration:none;white-space:nowrap}.site-head__nav{display:flex;gap:1.2rem;flex:1;overflow-x:auto;scrollbar-width:none}.site-head__nav::-webkit-scrollbar{display:none}.site-head__nav a,.site-head__util a{font-size:.68rem;color:var(--text);text-decoration:none;white-space:nowrap;padding:.3rem 0;border-bottom:2px solid transparent}.site-head__nav a:hover{color:var(--brand);border-bottom-color:var(--brand)}.site-head__nav a.active{border-bottom-color:var(--rule);font-weight:700}.site-head__util{display:flex;gap:1rem;align-items:center}.site-head__util a:hover{color:var(--brand)}.site-head__util .lang-current{color:var(--brand);font-weight:700}@media(max-width:48rem){.site-head__util .u-optional{display:none}}.book-header{position:sticky;top:calc(3.4rem + 1px);z-index:30;background:var(--bg);border-bottom:1px solid var(--border)}.book-menu .book-menu-content,.book-toc .book-toc-content{top:calc(3.4rem + 1px)}.book-menu .book-brand{display:none}.book-header h3{margin:.6rem 0;font-weight:700}.book-kind-home .book-header{display:none}.book-menu{width:280px;border-right:1px solid var(--border);background:var(--bg);font-size:.84rem}.book-menu-content{padding-bottom:2rem}.book-menu-content::-webkit-scrollbar{width:6px}.book-menu-content::-webkit-scrollbar-track{background:0 0}.book-menu-content::-webkit-scrollbar-thumb{background:var(--border)}.book-menu-content::-webkit-scrollbar-thumb:hover{background:var(--muted)}.book-menu-content{scrollbar-width:thin;scrollbar-color:var(--border)transparent}.book-brand a{color:inherit;font-weight:900}.book-menu a:hover{color:var(--brand);opacity:1}.book-menu .active>a,.book-menu .toc a.active{background:0 0;color:var(--brand);font-weight:700}.book-languages{display:none}.book-menu nav>ul a[href].active,.book-menu .book-section-flat a[href].active{background:0 0;color:var(--text);font-weight:700;border-left:2px solid var(--brand);margin-left:-2px;padding-left:calc(.5rem + 2px)}.book-search input{border:1px solid var(--rule);padding:.5rem .9rem;background:var(--surface);color:var(--text);font-family:inherit}.book-search input:focus{outline:none;border-color:var(--brand);box-shadow:none}@media(max-width:48rem){.book-menu{width:80vw}}.book-page{max-width:100ch}.book-page main{padding-top:.5rem}.page-title-block{margin:.6rem 0 1.6rem}.page-title-block__kicker{margin:0 0 .5rem;font-size:.74rem;font-weight:400;color:var(--brand)}.page-title-block__title{margin:0;font-size:var(--fs-3);font-weight:900;letter-spacing:.01em;line-height:1.3;color:var(--text);border-bottom:0;padding-bottom:0}.book-page img,.book-page .video-container,.youtube-embed{display:block;margin:2rem auto;border:1px solid var(--border);box-shadow:none;max-width:95%;height:auto;background:#fff}.pagetop-box{background:var(--elev);border:0;border-left:4px solid var(--rule);padding:1rem 1.25rem}.pagetop-box b{color:var(--text)}.lesson-block{margin:1.8rem 0;padding:0;border:1px solid var(--rule);background:var(--surface);color:var(--text);overflow:hidden}.lesson-block__title{margin:0;padding:.5rem 1.1rem;font-size:.74rem;font-weight:700;color:var(--bg);background:var(--rule);border:0}.lesson-block__body{margin:0;padding:1rem 1.25rem}.lesson-block__body ul{margin:.25rem 0 0;padding-left:1.2rem}div.notices{margin:1.6rem 0}div.notices p{background:var(--elev);color:var(--text);border:0;border-left:4px solid var(--rule);padding:.9rem 1.1rem;box-shadow:none}div.notices.info p{border-left-color:var(--yellow)}div.notices.warning p{border-left-color:var(--rule)}div.notices.note p{border-left-color:var(--brand)}div.notices.tip p{border-left-color:var(--brand)}div.notices.ref p{border-left-color:var(--muted)}div.notices.tip p,div.notices.warning p{position:relative;padding-left:2.6rem}div.notices.tip p::before,div.notices.warning p::before{font-family:"font awesome 6 free";font-weight:900;font-size:1rem;position:absolute;left:.9rem;top:.95rem;line-height:1}div.notices.tip p::before{content:"\f0eb";color:var(--brand)}div.notices.warning p::before{content:"\f071";color:var(--text)}.summary-box{margin:2rem 0;padding:1.2rem 1.4rem;border:0;border-left:4px solid var(--rule);background:var(--elev);box-shadow:none;color:var(--text);position:relative}.summary-box__title{display:inline-block;margin-bottom:.6rem;padding:.15rem .7rem;font-weight:700;font-size:.72rem;color:var(--bg);background:var(--rule)}.summary-box__content{margin:0}.summary-box__content ul{margin:.3rem 0 0;padding-left:1.2rem}.summary-box__content li{margin:.2rem 0}.refnote{margin-top:2rem;padding:1rem 1.25rem;border:0;border-left:4px solid var(--muted);background:var(--elev);font-size:.88rem;color:var(--text)}.refnote__title{margin:0 0 .4rem;font-size:.7rem;font-weight:700;color:var(--muted)}.refnote__body{margin:0}.refnote__body ul{margin:.25rem 0 0;padding-left:1.1rem;list-style:square}.refnote__body li{margin:.2rem 0}.refnote__body a{color:var(--link)}.refnote__body a:hover{color:var(--link-hover)}.highlight pre{background:var(--elev);color:var(--text);border:1px solid var(--rule);padding:1.1rem 1.2rem;box-shadow:none;position:relative}.highlight pre code{background:0 0}.code-copy-btn{position:absolute;top:.5rem;right:.6rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--rule);background:var(--surface);color:var(--text);cursor:pointer;transition:background .15s ease,color .15s ease;font-size:.85rem;padding:0;z-index:10}.code-copy-btn:hover{background:var(--brand);border-color:var(--brand);color:#fff;transform:none}.code-copy-btn--copied{background:var(--rule);border-color:var(--rule);color:#fff}.code-copy-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}@media(max-width:48rem){.code-copy-btn{width:2.25rem;height:2.25rem;font-size:1rem}}.book-article p>code,.book-article li>code,.book-article table code{background:var(--elev);color:var(--text);border:1px solid var(--border);padding:.1em .35em;font-weight:500}.chroma{color:#1f2328}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .hl{background-color:#e5e5e5}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9d97}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9d97}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:#cf222e}.chroma .na,.chroma .nc{color:#1f2328}.chroma .no,.chroma .nd,.chroma .nt{color:#0038ff}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx,.chroma .p{color:#1f2328}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm{color:#953800}.chroma .nf,.chroma .fm{color:#6639ba}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#0038ff}.chroma .o,.chroma .ow{color:#0038ff}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;margin:1.25rem 0;scrollbar-gutter:stable both-edges}.table-scroll::-webkit-scrollbar{height:8px}.table-scroll::-webkit-scrollbar-thumb{background:var(--border)}.table-scroll::-webkit-scrollbar-track{background:0 0}.table-scroll table{width:max-content;min-width:100%}.book-article table{border:1px solid var(--rule);border-collapse:separate;border-spacing:0;background:var(--surface);box-shadow:none;overflow:hidden;display:inline-table}.book-article th,.book-article td{padding:.65rem .8rem;border-bottom:1px solid var(--border);word-break:break-word}.book-article th{background:var(--surface);text-align:left;font-weight:700;font-size:.72rem;color:var(--text);border-bottom:2px solid var(--rule)}.book-article tr:hover td{background:var(--elev)}.book-toc{border-left:1px solid var(--border);background:var(--bg)}.book-toc-content{padding-top:.75rem}#TableOfContents a{color:var(--muted);transition:color .15s ease,border-color .15s ease;border-left:2px solid transparent;padding-left:.5rem;margin-left:-.5rem}#TableOfContents a:hover{color:var(--brand);opacity:1}#TableOfContents a.active{color:var(--brand);font-weight:700;border-left-color:var(--brand)}#TableOfContents li{margin:.25rem 0}.book-footer{background:var(--bg);border-top:0;padding-bottom:0}.book-footer .book-icon{filter:none}:focus-visible{outline:2px solid var(--ring);outline-offset:3px}.book-article a[target=_blank]::after{content:"\2197";font-size:.85em;margin-left:.15em;opacity:.6}.book-article a[target=_blank]:hover::after{opacity:.9}.meta-bar{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;align-items:center;margin:.8rem 0 0;padding:.6rem 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--border)}.meta-bar .meta{display:flex;align-items:center;gap:.4rem 1.2rem;flex-wrap:wrap}.meta-item{display:inline-flex;align-items:center;gap:.3rem;padding:0;font-size:.66rem;color:var(--muted);background:0 0}.meta-item time{font-weight:500}.meta-bar .dot{display:none}.meta-item a{color:var(--link)}.breadcrumbs{margin:0 0 .6rem;padding:0;font-size:.64rem;color:var(--muted);line-height:1.6}.breadcrumbs a{color:var(--muted);text-decoration:none;transition:color .15s ease}.breadcrumbs a:hover{color:var(--brand)}.breadcrumbs .sep{margin:0 .35rem;color:var(--border)}.breadcrumbs .current{color:var(--text);font-weight:700}.site-footer{margin:3rem -1rem -1rem;border-top:1px solid var(--rule);background:var(--elev);font-size:.85rem;color:var(--muted)}@media(min-width:80rem){.site-footer{margin:3rem -1rem -2rem}}.site-footer__inner{display:grid;grid-template-columns:1fr;gap:1.5rem;padding:2rem 1rem 1.5rem}@media(min-width:48rem){.site-footer__inner{grid-template-columns:1.2fr 2fr;gap:2rem}}.site-footer__brand{display:flex;flex-direction:column;gap:.3rem}.site-footer__logo{font-size:1.1rem;font-weight:900;color:var(--text)}.site-footer__tagline{margin:0;font-size:.64rem;color:var(--muted)}.site-footer__links{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}@media(max-width:36rem){.site-footer__links{grid-template-columns:1fr 1fr}}.site-footer__lang-current{font-weight:700;color:var(--brand)}.site-footer__heading{margin:0 0 .5rem;font-size:.66rem;font-weight:700;color:var(--text)}.site-footer__col ul{list-style:none;margin:0;padding:0}.site-footer__col li{margin:.25rem 0}.site-footer__col a{color:var(--muted);text-decoration:none;transition:color .15s ease}.site-footer__col a:hover{color:var(--brand)}.site-footer__col a i{width:1rem;text-align:center;margin-right:.3rem;font-size:.9em}.site-footer__bottom{padding:.75rem 1rem;border-top:1px solid var(--border);text-align:center;font-size:.62rem}.site-footer__bottom a{color:var(--muted);text-decoration:underline;text-underline-offset:.15em}.site-footer__bottom a:hover{color:var(--brand)}.yt{margin:2rem 0}.yt-cap{margin-top:.5rem;font-size:.85rem;color:var(--muted)}.yt-frame{width:100%;min-height:400px;border:1px solid var(--rule);overflow:hidden;box-shadow:none;background:#000}.yt-frame iframe{width:100%;height:100%;display:block;border:0}.yt--wide,.yt--full{width:calc(100vw - 2rem);max-width:var(--embed-max,1100px);margin-left:50%;transform:translateX(-50%)}.yt--full{--embed-max:1400px}.share-bar{margin:0;padding:1rem 0;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.share-bar__label{font-size:.68rem;font-weight:700;color:var(--muted)}.share-bar__buttons{display:flex;gap:.5rem;flex-wrap:wrap}.share-bar__btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .8rem;font-size:.85rem;font-weight:500;border:1px solid var(--rule);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;transition:background .15s ease,color .15s ease}.share-bar__btn i{font-size:.9rem}.share-bar__btn:hover{border-color:var(--brand);background:var(--brand);color:#fff}.share-bar__btn--copied{border-color:var(--rule) !important;background:var(--rule) !important;color:#fff !important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;white-space:nowrap}@media print{.share-bar{display:none !important}}.answer-actions{margin:1rem 0}.answer-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.1rem;border:1px solid var(--brand);background:var(--brand);color:#fff;font-weight:700;font-size:.95rem;cursor:pointer;transition:background .15s ease;box-shadow:none}.answer-btn:hover,.answer-btn:focus-visible{background:var(--link-hover);box-shadow:none;transform:none}.answer-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.answer-dialog::backdrop{background:rgba(0,0,0,.4)}.answer-dialog{border:1px solid var(--rule);padding:0;min-width:280px;max-width:90vw;box-shadow:none}.answer-dialog__form{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem}.answer-dialog__close{align-self:flex-end;padding:.4rem 1rem;border:1px solid var(--rule);background:var(--surface);color:var(--text);cursor:pointer}.answer-dialog__close:hover,.answer-dialog__close:focus-visible{background:var(--elev)}.answer-dialog__content pre{background:var(--elev);color:var(--text);border:1px solid var(--rule);padding:1rem;overflow-x:auto}@media(min-width:768px){.answer-dialog{width:100%;max-width:720px}}.chapter-landing .page-title-block{margin:0 0 2rem;padding:0 0 1.4rem;border-bottom:1px solid var(--rule)}.chapter-landing .page-title-block__kicker{display:inline-block;margin:0 0 .6rem;padding:0;font-size:.78rem;font-weight:400;color:var(--brand);background:0 0;line-height:1.5}.chapter-landing .summary-box{padding:1.4rem 1.6rem;border-left-width:4px;border-left-color:var(--rule);font-size:var(--fs-0);box-shadow:none}.chapter-landing .summary-box~h2:first-of-type{margin-top:2.5rem;padding:0 0 .5rem;border-bottom:1px solid var(--rule);border-left:0;color:var(--text);font-size:var(--fs-2)}.chapter-landing .summary-box~h2:first-of-type+p{margin-left:0;padding:.8rem 1.1rem;border-left:4px solid var(--border);background:var(--elev);color:var(--text);line-height:1.9}.chapter-landing h3{margin-top:2rem;margin-bottom:0;padding:.6rem 1.1rem;font-size:.92rem;font-weight:700;color:var(--text);background:var(--surface);border:1px solid var(--rule);border-bottom:none;letter-spacing:.01em}.chapter-landing h3::before{content:"";display:inline-block;width:3px;height:.9em;margin-right:.6rem;background:var(--brand);vertical-align:middle}.chapter-landing h3+ul,.chapter-landing h3+ol{margin-top:0;margin-bottom:0;padding:1rem 1.2rem 1rem 2.2rem;border:1px solid var(--rule);border-top:1px solid var(--border);background:var(--surface);box-shadow:none}.chapter-landing h3+ul li,.chapter-landing h3+ol li{margin:.35rem 0;line-height:1.75;color:var(--text)}.chapter-landing h3+ol{list-style:none;padding:1rem 1.2rem 1rem 3.2rem;counter-reset:step-counter;position:relative}.chapter-landing h3+ol>li{counter-increment:step-counter;position:relative;padding-left:0;margin:.6rem 0}.chapter-landing h3+ol>li::before{content:counter(step-counter);position:absolute;left:-2.2rem;top:.15em;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:.72rem;font-weight:700;color:#fff;background:var(--rule);line-height:1;z-index:1}.chapter-landing h3+ul+h3,.chapter-landing h3+ol+h3{margin-top:1.5rem}.chapter-landing .summary-box~h2:nth-of-type(2){margin-top:3rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule);color:var(--text)}@media(max-width:48rem){.chapter-landing .page-title-block{margin:0 0 1.5rem}.chapter-landing h3{padding:.55rem .9rem;font-size:.9rem}.chapter-landing h3+ul,.chapter-landing h3+ol{padding:.8rem 1rem .8rem 1.8rem}.chapter-landing h3+ol{padding-left:2.8rem}}.back-to-top{position:fixed;bottom:2rem;right:2rem;z-index:50;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--rule);background:var(--surface);color:var(--text);cursor:pointer;box-shadow:none;opacity:0;transform:translateY(1rem);transition:opacity .3s ease,transform .3s ease,background .15s ease,color .15s ease;pointer-events:none;font-size:.9rem}.back-to-top.visible{opacity:1;transform:translateY(0);pointer-events:auto}.back-to-top:hover{background:var(--brand);border-color:var(--brand);color:#fff}.highlight:has(.lntable){background:var(--elev);border:1px solid var(--rule);overflow:hidden}.highlight .lntable{width:100%;border-spacing:0;margin:0;display:table}.highlight .lntable td{padding:0;border:none;vertical-align:top}.highlight .lntable pre{background:0 0;border:none;box-shadow:none;margin:0}.highlight .lntable .lntd:first-child{width:2.8rem;user-select:none;-webkit-user-select:none;border-right:1px solid var(--border)}.highlight .lntable .lntd:first-child pre{text-align:right;padding:1.1rem .6rem 1.1rem .4rem;color:var(--muted);font-size:.82em}.highlight .lntable .lntd:last-child pre{padding:1.1rem 1.2rem}.highlight[class*=language-text] pre,.highlight[class*=language-output] pre,.highlight[class*=language-plaintext] pre{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent-2);font-style:italic;color:var(--muted)}.book-article img{cursor:zoom-in;transition:border-color .15s ease}.book-article img:hover{box-shadow:none;border-color:var(--brand)}.lightbox-overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:lightbox-fade-in .2s ease}.lightbox-overlay img{max-width:95vw;max-height:92vh;object-fit:contain;border:0;box-shadow:none;cursor:zoom-out}@keyframes lightbox-fade-in{from{opacity:0}to{opacity:1}}.book-footer>.flex.justify-between{gap:0;margin:2rem 0 .5rem;padding:0;border:1px solid var(--rule)}.book-footer>.flex.justify-between>span{flex:1;min-width:0;display:block}.book-footer>.flex.justify-between>span+span{border-left:1px solid var(--rule)}.book-footer>.flex.justify-between>span:last-child a{justify-content:flex-end;text-align:right}.book-footer>.flex.justify-between a{display:flex;align-items:center;gap:.4rem;padding:.9rem 1.1rem;border:0;text-decoration:none;color:var(--text);font-size:.88rem;font-weight:700;transition:background .15s ease,color .15s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-footer>.flex.justify-between a:hover{background:var(--brand);color:#fff}.book-footer>.flex.justify-between a:hover .book-icon{filter:brightness(0)invert(1)}.book-footer>.flex.justify-between a .book-icon{width:1rem;height:1rem;flex-shrink:0}@media(max-width:600px){.book-footer>.flex.justify-between{flex-direction:column}.book-footer>.flex.justify-between>span+span{border-left:0;border-top:1px solid var(--rule)}}div.notices.seealso p{border-left-color:var(--brand)}div.notices.seealso ul{list-style:none;padding:.3rem 0 0;margin:0;display:flex;flex-wrap:wrap;gap:.4rem}div.notices.seealso li{margin:0}div.notices.seealso li a{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .7rem;border:1px solid var(--rule);background:var(--surface);font-size:.82rem;text-decoration:none;color:var(--text);transition:background .15s ease,color .15s ease}div.notices.seealso li a::before{content:"\f0c1";font-family:"font awesome 6 free";font-weight:900;font-size:.7em;color:var(--brand)}div.notices.seealso li a:hover{background:var(--brand);border-color:var(--brand);color:#fff}div.notices.seealso li a:hover::before{color:#fff}.difficulty-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.05rem .5rem;font-size:.62rem;font-weight:700;border:1px solid;background:0 0;vertical-align:middle}.difficulty-badge--beginner{color:#0a7a4a}.difficulty-badge--intermediate{color:#b45309}.difficulty-badge--advanced{color:#b3261e}.audience-badge{display:inline-flex;align-items:center;padding:.05rem .5rem;font-size:.62rem;font-weight:700;color:var(--brand);border:1px solid var(--brand);background:0 0;vertical-align:middle}.audience-note{margin:1.6rem 0;border:1px solid var(--rule);background:var(--surface)}.audience-note__label{display:block;padding:.4rem 1.1rem;font-size:.68rem;font-weight:700;color:var(--bg);background:var(--brand)}.audience-note__body{padding:.9rem 1.1rem}.audience-note__body>:first-child{margin-top:0}.audience-note__body>:last-child{margin-bottom:0}.colab-link{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .9rem;margin:.5rem 0;font-size:.85rem;font-weight:700;color:var(--text);background:var(--surface);border:1px solid var(--rule);text-decoration:none;transition:background .15s ease,color .15s ease;box-shadow:none}.colab-link:hover{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:none;transform:none}.colab-link img{width:1.2em;height:1.2em;margin:0;box-shadow:none;border:0}.viz-container{margin:2rem 0;padding:0;border:1px solid var(--rule);background:var(--surface);box-shadow:none}.viz-container::before{content:"Interactive";display:block;padding:.35rem 1rem;font-size:.64rem;font-weight:700;color:var(--bg);background:var(--rule)}.viz-main{display:flex;flex-wrap:wrap;gap:1.2rem;align-items:flex-start;padding:1.2rem}.viz-canvas-wrap{flex:1 1 320px;max-width:440px;min-width:0}.viz-canvas{display:block;width:100%;height:auto}.viz-cm-grid{display:grid;grid-template-columns:auto 1fr 1fr;grid-template-rows:auto 1fr 1fr;gap:2px;width:100%;max-width:340px}.viz-cm-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.8rem .6rem;font-size:1.4rem;font-weight:700;transition:background-color .15s ease;min-height:70px;border:1px solid var(--border)}.viz-cm-cell small{font-size:.7rem;font-weight:600;margin-bottom:.2rem;opacity:.7}.viz-cm-cell--tp,.viz-cm-cell--tn{background:rgba(10,122,74,.1);color:#0a7a4a}.viz-cm-cell--fp,.viz-cm-cell--fn{background:rgba(179,38,30,8%);color:#b3261e}.viz-cm-header{display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.64rem;color:var(--muted);padding:.4rem}.viz-cm-header--rotated{writing-mode:vertical-rl;text-orientation:mixed}.viz-controls{width:100%;padding:0 1.2rem 1rem}.viz-slider-row{display:flex;align-items:center;gap:.75rem}.viz-slider-label{font-size:.66rem;font-weight:700;color:var(--text);white-space:nowrap;min-width:70px}.viz-slider{flex:1;accent-color:var(--brand);cursor:pointer;height:4px}.viz-slider-value{font-family:var(--mono);font-size:.88rem;font-weight:700;color:var(--brand);min-width:55px;text-align:right;font-variant-numeric:tabular-nums}.viz-metrics{flex:none;min-width:170px;display:flex;flex-direction:column;gap:0;border:1px solid var(--border)}.viz-metric{display:flex;justify-content:space-between;align-items:center;padding:.35rem .7rem;background:var(--surface)}.viz-metric+.viz-metric{border-top:1px solid var(--border)}.viz-metric__label{font-size:.62rem;color:var(--muted)}.viz-metric__value{font-family:var(--mono);font-size:.88rem;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}@media(max-width:48rem){.viz-main{flex-direction:column}.viz-canvas-wrap{max-width:100%}.viz-metrics{min-width:0;width:100%}}.read-toggle{margin:2.5rem 0 0;padding-top:1rem;border-top:1px solid var(--border)}.read-toggle__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.2rem;font-size:.68rem;font-weight:700;border:1px solid var(--rule);background:var(--surface);color:var(--text);cursor:pointer;transition:background .15s ease,color .15s ease}.read-toggle__btn:hover{background:var(--brand);border-color:var(--brand);color:#fff}.read-toggle__btn--done{background:var(--brand);border-color:var(--brand);color:#fff}.read-toggle__btn--done:hover{background:var(--surface);color:var(--text);border-color:var(--rule)}.section-children__link.is-read .section-children__title::after{content:"✓";font-family:var(--mono);font-weight:700;color:var(--brand);margin-left:.45rem}.section-children__progress{font-size:.66rem;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}.page-title-block__progress{margin:.5rem 0 0;font-size:.68rem;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}.section-children{margin:2.5rem 0 0;padding-top:1.6rem;border-top:1px solid var(--rule)}.section-children__heading{display:flex;align-items:baseline;gap:.6rem;margin:0 0 1rem;padding:0;border:none;font-size:var(--fs-1);font-weight:900;color:var(--text)}.section-children__count{font-size:.66rem;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.section-children__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.7rem;margin:0;padding:0;list-style:none}.section-children__item{margin:0}.section-children__link{display:flex;flex-direction:column;gap:.35rem;height:100%;padding:.85rem 1rem;border:1px solid var(--border);background:var(--surface);text-decoration:none;color:var(--text);transition:border-color .15s ease}.section-children__link:hover,.section-children__link:focus-visible{border-color:var(--brand);box-shadow:none;transform:none;text-decoration:none}.section-children__link:hover .section-children__title{color:var(--brand)}.section-children__item--section .section-children__link{background:var(--elev)}.section-children__title{display:block;font-size:.95rem;font-weight:700;line-height:1.5}.section-children__num{font-family:var(--mono);margin-right:.4rem;font-size:.72rem;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}.section-children__desc{display:block;font-size:.8rem;line-height:1.7;color:var(--muted)}.section-children__meta{display:flex;align-items:center;gap:.5rem;margin-top:auto;padding-top:.3rem;font-size:.6rem;color:var(--muted);font-variant-numeric:tabular-nums}@media(max-width:48rem){.section-children__grid{grid-template-columns:1fr}}.home{max-width:90rem;margin:0 auto;padding:0 1rem}.home-band__label{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;margin:0 0 1.2rem;font-size:.74rem;font-weight:700;color:var(--text)}.home-hero{padding:3.6rem 0 2.6rem}.home-hero__kicker{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;font-size:.66rem;color:var(--muted);margin:0 0 1.1rem;padding-bottom:.5rem;border-bottom:2px solid var(--rule);display:inline-block}.home-hero h1{margin:0;font-weight:900;font-size:clamp(2rem,4.6vw,3.6rem);line-height:1.3;letter-spacing:.01em;max-width:26em}.home-hero__lede{margin:1.2rem 0 0;font-size:.88rem;color:var(--muted);line-height:2;max-width:64ch}.home-stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--rule);margin-top:2rem}.home-stats__cell{display:flex;align-items:baseline;gap:.55rem;padding:.8rem 1.1rem;border-left:1px solid var(--rule)}.home-stats__cell:first-child{border-left:none}.home-stats__cell b{font-family:var(--mono);font-size:1.35rem;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums}.home-stats__cell span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;font-size:.62rem;color:var(--muted)}.home-toc{margin-top:2.4rem}.home-toc nav{border-top:2px solid var(--rule);border-bottom:2px solid var(--rule)}.home-toc__row{display:grid;grid-template-columns:5.5rem minmax(0,1fr)auto 2.4rem;align-items:center;gap:1.4rem;padding:1.05rem .4rem;text-decoration:none;color:var(--text);border-top:1px solid var(--border);transition:background .12s ease}.home-toc__row:first-child{border-top:none}.home-toc__row:hover{background:var(--elev)}.home-toc__num{font-family:var(--mono);font-size:1.5rem;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums;line-height:1}.home-toc__body{min-width:0}.home-toc__name{display:block;font-weight:800;font-size:1.12rem;line-height:1.4}.home-toc__row:hover .home-toc__name{color:var(--brand)}.home-toc__desc{display:block;font-size:.78rem;color:var(--muted);line-height:1.7}.home-toc__side{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.home-toc__pages,.home-toc__prog{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;font-size:.62rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.home-toc__prog{color:var(--brand);font-weight:700}.home-toc__arrow{font-weight:900;color:var(--border);transition:color .12s ease,transform .12s ease}.home-toc__row:hover .home-toc__arrow{color:var(--brand);transform:translateX(4px)}.home-preview{border-top:1px solid var(--rule);margin-top:3.6rem;padding-top:1.4rem}.home-preview__title{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap}.home-preview__num{font-family:var(--mono);letter-spacing:.13em;font-size:.78rem;font-weight:700;color:var(--brand)}.home-preview__title h2{margin:0;font-weight:900;font-size:clamp(1.4rem,2.6vw,2rem);line-height:1.25}.home-preview__title .home-more{margin-left:auto}.home-preview__desc{margin:.5rem 0 1.4rem;font-size:.8rem;color:var(--muted);max-width:70ch}.home-more{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;font-size:.64rem;border-bottom:2px solid var(--rule);padding:0 0 .2rem;white-space:nowrap;color:var(--text);text-decoration:none;transition:color .12s ease,border-color .12s ease}.home-more:hover{color:var(--brand);border-bottom-color:var(--brand)}.home-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem}.home-card{border:1px solid var(--border);display:flex;flex-direction:column;text-decoration:none;color:var(--text);transition:border-color .12s ease}.home-card:hover{border-color:var(--brand)}.home-card__thumb{border-bottom:1px solid var(--border);background:#fff;aspect-ratio:5/3;overflow:hidden;display:flex;align-items:center;justify-content:center}.home-card__thumb img{width:100%;height:100%;object-fit:cover;margin:0;border:0}.home-card__body{padding:.8rem .9rem 1rem}.home-card__title{font-weight:700;font-size:.9rem;line-height:1.55;display:block}.home-card:hover .home-card__title{color:var(--brand)}.home-card__meta{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;margin-top:.5rem;display:flex;gap:.9rem;font-size:.6rem;color:var(--muted)}.home-roadmap{border-top:1px solid var(--rule);margin-top:3.6rem;padding-top:1.4rem}.home-roadmap__steps{display:grid;grid-template-columns:1fr 1.6rem 1fr 1.6rem 1fr 1.6rem 1fr;align-items:stretch}.home-roadmap__step{border:1px solid var(--rule);padding:1rem 1.1rem}.home-roadmap__step .ph{font-family:var(--mono);letter-spacing:.13em;font-size:.62rem;color:var(--brand)}.home-roadmap__step .t{font-weight:800;font-size:1rem;margin:.15rem 0 .2rem}.home-roadmap__step .s{font-family:var(--mono);letter-spacing:.13em;font-size:.6rem;color:var(--muted)}.home-roadmap__arrow{display:flex;align-items:center;justify-content:center;font-weight:900;color:var(--brand)}.home-updates{border-top:1px solid var(--rule);margin-top:3.6rem;padding-top:1.4rem;margin-bottom:4rem}.home-updates ul{list-style:none;margin:0;padding:0}.home-updates li{border-bottom:1px solid var(--border)}.home-updates a{display:grid;grid-template-columns:7.5rem 8rem 1fr;gap:1.5rem;padding:.7rem .2rem;align-items:baseline;text-decoration:none;color:var(--text)}.home-updates .date,.home-updates .sec{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;font-size:.64rem;color:var(--muted)}.home-updates .t{font-weight:600;font-size:.92rem}.home-updates a:hover .t{color:var(--brand)}@media(max-width:64rem){.home-cards{grid-template-columns:repeat(2,1fr)}.home-stats{grid-template-columns:1fr 1fr}.home-stats__cell:nth-child(3){border-left:none}.home-stats__cell:nth-child(n+3){border-top:1px solid var(--rule)}.home-roadmap__steps{grid-template-columns:1fr}.home-roadmap__arrow{height:1.8rem}}@media(max-width:36rem){.home-hero{padding-top:2.4rem}.home-toc__row{grid-template-columns:3.2rem minmax(0,1fr)1.4rem}.home-toc__side{display:none}.home-toc__num{font-size:1.1rem}.home-cards{grid-template-columns:1fr}.home-updates a{grid-template-columns:6.5rem 1fr}.home-updates .sec{display:none}}