@media screen and (min-width:1024px){html{font-size:130%}}body{position:relative;margin:auto;max-width:800px}@media screen and (max-width:768px){html{zoom:100%!important;text-align:left!important}body{transform:none!important;max-width:100%!important;margin:0!important}.doc-content{padding:5%;width:100%!important;box-sizing:border-box}.chapters-links,.inside-chapter-links,.pager{box-sizing:border-box;max-width:100vw;overflow-x:hidden}table{display:block;width:100%;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}table::-webkit-scrollbar{height:6px}table::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}table::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}table::-webkit-scrollbar-thumb:hover{background:#a8a8a8}code,img,pre{max-width:100%!important}code,pre{overflow-x:auto;word-wrap:break-word;white-space:pre-wrap}img{height:auto!important}body,header,html,main.doc-content{overflow-x:hidden!important}body,header,html{max-width:100vw!important}main.doc-content{padding:15px!important;max-width:100%!important}}.doc-content{padding:10%;width:100%}.copy-button{position:absolute;top:50%;right:-30px;transform:translateY(-50%);background:0 0;border:0;cursor:pointer;opacity:.2;padding:0;margin:0;transition:opacity .2s ease,transform .1s ease}.copy-button:hover{opacity:.6;transform:translateY(-50%) scale(1.1)}.copy-button:active{opacity:.9;transform:translateY(-50%) scale(.95)}.copy-button img.copy-icon{width:20px;height:20px;filter:grayscale(100%) brightness(0%);transition:filter .2s ease}.copy-button.copied img.copy-icon{filter:hue-rotate(100deg) brightness(1.2)}pre.imgx{cursor:pointer;overflow:hidden;max-width:100%;margin:0 auto;text-align:center;display:block}pre.imgx span{display:inline-block;transition:transform .2s,color .2s}pre.imgx span.lupa,pre.imgx span:hover{opacity:.4;transform:scale(2.5)}@media (max-width:600px){pre.imgx{line-height:1}}.pager{width:100%;margin:2rem 0;padding:1.5rem 0;border-top:2px solid #e5e5e5;border-bottom:2px solid #e5e5e5;justify-content:space-between;align-items:center;box-shadow:0 2px 10px rgba(0,0,0,.05);min-height:60px}.next_page,.prev_page{background:0 0!important;color:#0e5b6e!important;font-weight:500;padding:0;text-decoration:none;font-size:.9rem;transition:all .3s ease;max-width:45%;text-align:left;overflow:hidden}.prev_page{float:left}.next_page{float:right}.next_page:hover,.prev_page:hover{color:#0e5b6e;text-decoration:none}.prev_page:before{content:"← ";font-weight:700}.next_page:after{content:" →";font-weight:700}.pager .next_page:only-child,.pager .prev_page:only-child{max-width:100%}@media (max-width:768px){.pager{gap:.5rem;padding:.5rem;margin:1rem 0}.next_page,.prev_page{float:left;max-width:42%;box-sizing:border-box;font-size:.8rem}.next_page{float:right;text-align:right}}.chapters-links{width:100%;margin:0;margin-top:1rem 0}.chapters-links ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}.chapters-links li{margin:0}.chapters-links a{text-transform:uppercase;display:inline-block;padding:.5rem 1rem;text-decoration:none;color:#a39f9f;transition:all .2s ease;font-size:.9rem;white-space:nowrap}.chapters-links a:hover{text-decoration:none;color:#495057}@media (max-width:768px){.chapters-links{padding:.25rem}.chapters-links ul{flex-direction:column;gap:.25rem}.chapters-links a{display:block;white-space:normal;padding:.3rem .6rem;font-size:.8rem}}.inside-chapter-links{margin:2rem 0;padding:1.5rem;background:linear-gradient(135deg,#f8f9fa 0,#fff 100%);border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.05)}.inside-chapter-links h3{margin:0 0 1rem;font-size:1rem;color:#495057;text-align:center;font-weight:600}.inside-chapter-links ul{list-style:none;padding:0;margin:0;counter-reset:chapter-counter;columns:2;column-gap:2rem;column-fill:balance;max-height:400px;overflow:visible}.inside-chapter-links li{margin:0;counter-increment:chapter-counter;break-inside:avoid;page-break-inside:avoid;margin-bottom:.5rem}.inside-chapter-links a,header{width:100%;box-sizing:border-box}.inside-chapter-links a{display:inline-block;text-align:left;letter-spacing:.05em;padding:.5em;transition-property:background;transition-duration:.1s;color:rgba(36,133,157,.772);text-decoration:none;border-radius:4px;font-size:.8rem;line-height:1.3;word-break:break-word;text-transform:uppercase}.inside-chapter-links a::before{content:counter(chapter-counter)" ";font-weight:600}.inside-chapter-links a:hover{background:rgba(0,119,170,.1);text-decoration:none}.chapters-links a.current,.inside-chapter-links a.current{font-weight:600}@media (max-width:768px){.inside-chapter-links{padding:.5rem;margin:1rem 0}.inside-chapter-links ul{columns:1;max-height:none}.inside-chapter-links a{font-size:.7rem;padding:.3em}}header{padding:.75rem 1rem;position:fixed;top:0;left:0;right:0;z-index:1000;margin:0;max-height:80px}html[data-style=book] header{background-color:#f8f9fa;opacity:.85;border-bottom:1px solid #dee2e6}html[data-style=book][data-theme=dark] header{background-color:#cdcdcd;border-bottom:1px solid #333}.header-container{display:flex;justify-content:space-between;align-items:center;max-width:100%;width:100%}.header-right{display:flex;align-items:center;position:relative}.nav-logo{font-weight:700;text-decoration:none;font-size:1.1rem;flex-shrink:0;position:relative;left:0}.menu-toggle{display:flex;flex-direction:column;justify-content:space-around;width:30px;height:30px;background:0 0;border:0;cursor:pointer;padding:0;box-sizing:border-box}.hamburger{width:25px;height:3px;background-color:#fff;border-radius:2px;transition:all .3s ease;transform-origin:1px}[data-theme=dark] .hamburger,html[data-style=book] .hamburger,html[data-style=book][data-theme=dark] .hamburger{background-color:#000}.menu-toggle.active .hamburger:nth-child(1){transform:rotate(45deg)}.menu-toggle.active .hamburger:nth-child(2){opacity:0}.menu-toggle.active .hamburger:nth-child(3){transform:rotate(-45deg)}.header-theme-toggle{background:0 0;border:0;cursor:pointer;padding:5px;margin-right:10px;display:flex;align-items:center;justify-content:center}.header-theme-toggle .theme-icon{width:24px;height:24px;stroke:#fff;transition:all .3s ease}.header-theme-toggle .moon-icon{display:block}.header-theme-toggle .sun-icon,[data-theme=dark] .header-theme-toggle .moon-icon{display:none}[data-theme=dark] .header-theme-toggle .sun-icon{display:block}[data-theme=dark] .header-theme-toggle .theme-icon,html[data-style=book] .header-theme-toggle .theme-icon,html[data-style=book][data-theme=dark] .header-theme-toggle .theme-icon{stroke:#000}.header-theme-toggle:hover .theme-icon{transform:scale(1.1)}.nav-menu{display:flex;align-items:center;gap:.75rem;opacity:0;visibility:hidden;max-width:0;overflow:hidden;transition:all .3s ease;margin-right:.75rem}.nav-menu.show{opacity:1;visibility:visible;max-width:200px}.lang-controls,.nav-controls,.theme-controls{display:flex;gap:.5rem;align-items:center}.lang-controls{margin-left:.5rem;padding-left:.5rem;border-left:1px solid #dee2e6}.nav-controls{margin-right:.5rem;padding-right:.5rem;border-right:1px solid #dee2e6}.lang-btn,.theme-btn{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:.4rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:36px;height:36px}.lang-btn:hover,.theme-btn:hover{background-color:#e9ecef;transform:translateY(-1px)}.theme-icon{width:18px;height:18px;color:#495057;transition:color .2s ease}.nav-btn:hover .nav-icon,.theme-btn:hover .theme-icon{color:#007bff}.nav-btn,.nav-btn:hover{text-decoration:none;color:inherit}.nav-btn{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:.4rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:36px;height:36px}.nav-btn:hover{background-color:#e9ecef;transform:translateY(-1px)}.nav-icon{width:18px;height:18px;color:#495057;transition:color .2s ease}@media (max-width:768px){header{padding:.5rem 1rem}body{padding-top:60px}.header-container{gap:.5rem}.header-right{justify-content:space-between;width:100%}.nav-menu{order:-1;margin-right:0;justify-content:center}.nav-menu.show{max-width:100%;width:auto}.menu-toggle{align-self:flex-end}.lang-btn,.theme-btn{min-width:32px;height:32px;padding:.3rem}.theme-icon{width:16px;height:16px}}body{padding-top:70px;background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease}@media (max-width:768px){header{padding:.5rem 1rem;max-height:60px;min-height:60px;opacity:.7;margin-top:0!important;padding-top:0!important}.header-container{display:flex;justify-content:space-between;align-items:center;width:100%}.nav-logo{font-size:1.4rem;margin:0;padding:0;flex-shrink:0}.header-right,.menu-toggle{display:flex;align-items:center;margin:0;padding:0}.menu-toggle{width:30px;height:30px;flex-direction:column;justify-content:space-around;background:0 0;border:0;cursor:pointer}header menu,header nav{justify-content:flex-end}header menu{flex-wrap:wrap}}:root{--bg-primary:#ffffff;--bg-secondary:#f8f9fa;--text-primary:#212529;--text-secondary:#6c757d;--accent-color:#007bff;--border-color:#dee2e6;--code-bg:#f8f9fa;--code-border:#e9ecef}[data-theme=dark]{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--text-primary:#e9ecef;--text-secondary:#adb5bd;--accent-color:#4dabf7;--border-color:#495057;--code-bg:#2d2d2d;--code-border:#495057}[data-theme=dark] html{background:#fff}[data-theme=dark] body{background:#fff;color:#000}code{background-color:var(--code-bg);border:0 solid var(--code-border)}a{color:var(--accent-color)}.pager a,a:hover,code{color:var(--text-primary)}.pager a{background-color:var(--bg-secondary)}.pager a:hover{background-color:var(--accent-color);color:var(--bg-primary)}.chapters-links,.inside-chapter-links,.pager a{border:0 solid var(--border-color)}.chapters-links a,.inside-chapter-links a{color:var(--text-secondary)}.chapters-links a.current,.chapters-links a:hover,.inside-chapter-links a.current,.inside-chapter-links a:hover{color:var(--accent-color)}hr{border-color:var(--border-color)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--text-primary:#e9ecef;--text-secondary:#adb5bd;--accent-color:#4dabf7;--border-color:#495057;--code-bg:#2d2d2d;--code-border:#495057}}html[data-theme=dark],html[data-theme=dark] img,html[data-theme=dark] video{filter:invert(1) hue-rotate(180deg)}html[data-theme=dark] img{background-color:#9a9a9a}html[data-theme=dark] img.copy-icon,html[data-theme=dark] table,html[data-theme=light] img{background-color:transparent}.index-content{margin:2rem 0;padding:1rem}.chapter-title{color:#2c3e50;font-size:1.5rem;font-weight:700;margin:2rem 0 1rem;padding-bottom:.5rem;border-bottom:2px solid #3498db}.chapter-pages{list-style:none;padding:0;margin:0 0 1.5rem 1rem}.chapter-pages li{margin:.5rem 0;padding-left:1rem;position:relative}.chapter-pages li:before{content:"→";position:absolute;left:0;color:#3498db;font-weight:700}.chapter-pages a{color:#2980b9;text-decoration:none;font-size:1rem;line-height:1.4;transition:color .2s ease}.chapter-pages a:hover{color:#3498db;text-decoration:underline}html[data-theme=dark] .chapter-title{color:#ecf0f1;border-bottom-color:#3498db}html[data-theme=dark] .chapter-pages a{color:#5dade2}html[data-theme=dark] .chapter-pages a:hover{color:#85c1e9}html[data-theme=dark] .chapter-pages li:before{color:#3498db}.index_list{text-align:left;margin:2rem 0;padding:0}.index_list .chapter-link{display:flex;justify-content:space-between;align-items:center;margin:1.5rem 0 .5rem;font-size:.9rem;font-weight:700;text-transform:uppercase;text-align:left}.index_list .chapter-link,.index_list .chapter-link:hover,.index_list .section-item a:hover{color:#000;text-decoration:none}.index_list .chapter-link::after{font-weight:700}.swipe-indicator,nav.breadcrumb{display:flex;align-items:center;padding:.5rem 1rem}.swipe-indicator{position:fixed;top:50%;transform:translateY(-50%);z-index:1001;background:rgba(0,0,0,.7);color:#fff;border-radius:20px;font-size:.8rem;transition:opacity .3s ease,transform .3s ease;pointer-events:none;opacity:0;gap:.5rem}.swipe-indicator.left{left:20px;transform:translateY(-50%) translateX(-10px)}.swipe-indicator.right{right:20px;transform:translateY(-50%) translateX(10px)}.swipe-indicator.show{opacity:1;transform:translateY(-50%) translateX(0)}.swipe-indicator .arrow{font-size:1.2rem;font-weight:700}@media (min-width:769px){.swipe-indicator{display:none!important}}.index_list .chapter-link .dots,.index_list .section-item a .dots,.index_list .subsection-item a .dots{flex-grow:1;border-bottom:1px dotted #000;height:1px;align-self:flex-end;margin:0 8px 3px}.index_list .section-list{list-style:none;padding:0;margin:0 0 0 1rem;text-align:left}.index_list .section-item{margin:.2rem 0;font-size:.9rem;font-weight:400;text-align:left}.index_list .section-item a,.index_list .subsection-item a{color:#000;text-decoration:none;display:flex;justify-content:space-between;align-items:center;text-align:left}.index_list .chapter-link::after,.index_list .section-item a::after{content:attr(data-page);margin-left:10px}.index_list .subsection-list{list-style:none;padding:0;margin:.3rem 0 0 1rem;text-align:left}.index_list .subsection-item{margin:.1rem 0;font-size:.8rem;font-weight:400;text-align:left}.index_list .subsection-item a{color:#666;font-style:italic}.index_list .subsection-item a:hover{color:#333;text-decoration:none}.index_list .subsection-item a::after{content:attr(data-page);margin-left:8px;font-size:.75rem}.index_list .subsection-item a .dots{border-bottom:1px dotted #999;margin:0 6px 2px}@media screen and (max-width:768px){h4,h6{margin-left:0!important;width:100%}h4>span,h6>span{display:block;text-indent:0}}@media screen and (max-width:480px){.pager{padding:.25rem;margin:.75rem 0;gap:.25rem}.next_page,.prev_page{max-width:40%;font-size:.75rem;padding:0}.chapters-links{padding:.125rem}.chapters-links ul{gap:.125rem}.chapters-links a{padding:.25rem .4rem;font-size:.75rem}.inside-chapter-links{padding:.375rem;margin:.75rem 0}.inside-chapter-links a{font-size:.65rem;padding:.25em}.doc-content{padding:3%!important}}nav.breadcrumb{font-family:"Crimson Pro",serif;flex-wrap:wrap;gap:.4rem;margin:1rem 0;border-radius:6px;font-size:.9rem}nav.breadcrumb a{text-decoration:none;transition:all .2s ease}nav.breadcrumb a:hover{color:var(--accent-color)}nav.breadcrumb a,nav.breadcrumb span{white-space:nowrap}main{margin:auto;padding-top:0!important}.wb-body,.winbox .wb-body{background:0 0!important;background-color:transparent!important}.prefs-winbox{border:3px solid #333!important;border-radius:8px!important}[data-theme=dark] .prefs-winbox{border-color:#f5f0e6!important}.prefs-modal-content{padding:20px;font-family:"VT323",monospace}.prefs-section{margin-bottom:20px}.prefs-label{display:block;font-size:16px;margin-bottom:10px;color:#fff;font-weight:700}.prefs-options{display:flex;gap:10px}.prefs-option{flex:1;padding:12px 16px;border:2px solid #333;background:#fff;color:#000;font-family:"VT323",monospace;font-size:16px;cursor:pointer;transition:all .15s}.prefs-option:hover{background:#e0d8c8}.prefs-option.active{background:#000;color:#fff;border-color:#8b0000;border-width:3px}[data-theme=dark] .prefs-modal-content{background:#1a1a1a}[data-theme=dark] .prefs-label{color:#f5f0e6}[data-theme=dark] .prefs-option{background:#fff;color:#000;border-color:#555}[data-theme=dark] .prefs-option:hover{background:#3a3a3a}[data-theme=dark] .prefs-option.active{background:#000;color:#fff;border-color:#8b0000;border-width:3px}.theme-toggle-container{display:flex;align-items:center;gap:12px}.theme-toggle-icon{width:24px;height:24px;color:#fff}.theme-toggle-icon svg{width:100%;height:100%}[data-theme=dark] .theme-toggle-icon{color:#f5f0e6}.theme-switch{position:relative;display:inline-block;width:60px;height:32px}.theme-switch input{opacity:0;width:0;height:0}.theme-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#f0c040;transition:.3s;border-radius:32px;border:2px solid #333}.theme-slider:before{position:absolute;content:"";height:24px;width:24px;left:2px;bottom:2px;background-color:#fff;transition:.3s;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.theme-switch input:checked+.theme-slider{background-color:#2c3e50}.theme-switch input:checked+.theme-slider:before{transform:translateX(28px)}.ace_editor{width:100%!important;box-sizing:border-box!important}@media (max-width:768px){.ace_editor{min-height:200px!important;height:400px;width:100%!important;min-width:0!important;box-sizing:border-box!important}.ace_scroller{min-height:400px!important}.ace_content{min-height:380px!important}.code_title{width:100%;max-width:300px;overflow:hidden}.code_table{overflow-x:auto!important;overflow-y:hidden!important;max-height:none!important}.code_output{overflow-x:auto!important;overflow-y:hidden;height:auto}.code_table td.code_body,.editor-container,td.code_body{padding:5px!important}}.zig-terminal-output{max-width:700px;overflow-x:auto}ul.subfooter-links{list-style:none;margin:0;display:flex;gap:1rem;justify-content:center;padding:0 0 300px}.buy-link{display:inline-block;background:0 0;color:#d7c7af!important;font-weight:900;font-family:"Inter",sans-serif;letter-spacing:1px;border:2px dashed #d7c7af;box-shadow:6px 6px 0#000;transition:all .15s ease;position:relative;text-decoration:none!important;font-size:.9rem!important;margin-left:10px!important;transform:rotate(5deg);padding:6px 10px 6px 32px!important}.buy-link::before{content:"";position:absolute;left:8px;top:50%;transform:translateY(-50%) translateX(-10%);width:24px;height:24px;background-image:url(./leanpub_ico_white.png);background-size:contain;background-repeat:no-repeat;background-position:center;opacity:.7}.buy-link:hover{color:#d7c7af!important;box-shadow:4px 4px 0#f7a41d;transform:translate(2px,2px)}.buy-link:active{box-shadow:2px 2px 0#000;transform:translate(4px,4px)}.buy-link:hover::after{content:" PDF"}.header-version{position:absolute;bottom:4px;left:50px;font-size:.55rem;font-weight:400;color:wheat!important;letter-spacing:4.4px;white-space:nowrap}a.header-version:hover{color:wheat!important;text-decoration:underline!important}html[data-style=book] .header-version{left:20px;color:#00f!important}html[data-theme=dark] .header-version{color:#000!important}@media (max-width:768px){.buy-link{background-color:transparent;box-shadow:none;border:0;padding:10px 12px;font-size:0!important;width:48px;height:48px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;margin-left:8px!important}.buy-link::before{content:"🛒";font-size:1rem;display:block}}