.highlight{background:var(--syntax-bg);color:var(--syntax-text)}.highlight pre{overflow-x:auto;white-space:pre}.highlight pre code{white-space:pre}.highlight .c{color:var(--syntax-comment);font-style:italic}.highlight .err{color:var(--syntax-error-text);background-color:var(--syntax-error-bg)}.highlight .k{font-weight:bold;color:var(--syntax-keyword)}.highlight .o{font-weight:bold;color:var(--syntax-operator)}.highlight .cm{color:var(--syntax-comment-ml);font-style:italic}.highlight .cp{color:var(--syntax-comment-preproc);font-weight:bold}.highlight .c1{color:var(--syntax-comment-single);font-style:italic}.highlight .cs{color:var(--syntax-comment-special);font-weight:bold;font-style:italic}.highlight .gd{color:var(--syntax-generic-deleted-text);background-color:var(--syntax-generic-deleted-bg)}.highlight .gd .x{color:var(--syntax-generic-deleted-text);background-color:var(--syntax-generic-deleted-bg)}.highlight .ge{font-style:italic}.highlight .gr{color:var(--syntax-generic-error)}.highlight .gh{color:var(--syntax-generic-heading)}.highlight .gi{color:var(--syntax-generic-inserted-text);background-color:var(--syntax-generic-inserted-bg)}.highlight .gi .x{color:var(--syntax-generic-inserted-text);background-color:var(--syntax-generic-inserted-bg)}.highlight .go{color:var(--syntax-generic-output)}.highlight .gp{color:var(--syntax-generic-prompt)}.highlight .gs{font-weight:bold}.highlight .gu{color:var(--syntax-generic-subheading)}.highlight .gt{color:var(--syntax-generic-traceback)}.highlight .kc{font-weight:bold;color:var(--syntax-keyword)}.highlight .kd{font-weight:bold;color:var(--syntax-keyword)}.highlight .kp{font-weight:bold;color:var(--syntax-keyword)}.highlight .kr{font-weight:bold;color:var(--syntax-keyword)}.highlight .kt{color:var(--syntax-keyword-type);font-weight:bold}.highlight .m{color:var(--syntax-literal-number)}.highlight .s{color:var(--syntax-literal-string)}.highlight .na{color:var(--syntax-name-attribute)}.highlight .nb{color:var(--syntax-name-builtin)}.highlight .nc{color:var(--syntax-name-class);font-weight:bold}.highlight .no{color:var(--syntax-name-constant)}.highlight .ni{color:var(--syntax-name-entity)}.highlight .ne{color:var(--syntax-name-exception);font-weight:bold}.highlight .nf{color:var(--syntax-name-function);font-weight:bold}.highlight .nn{color:var(--syntax-name-namespace)}.highlight .nt{color:var(--syntax-name-tag)}.highlight .nv{color:var(--syntax-name-variable)}.highlight .ow{font-weight:bold;color:var(--syntax-operator)}.highlight .w{color:var(--syntax-text-whitespace)}.highlight .mf{color:var(--syntax-literal-number)}.highlight .mh{color:var(--syntax-literal-number)}.highlight .mi{color:var(--syntax-literal-number)}.highlight .mo{color:var(--syntax-literal-number)}.highlight .sb{color:var(--syntax-literal-string)}.highlight .sc{color:var(--syntax-literal-string)}.highlight .sd{color:var(--syntax-literal-string)}.highlight .s2{color:var(--syntax-literal-string)}.highlight .se{color:var(--syntax-literal-string)}.highlight .sh{color:var(--syntax-literal-string)}.highlight .si{color:var(--syntax-literal-string)}.highlight .sx{color:var(--syntax-literal-string)}.highlight .sr{color:var(--syntax-literal-string-regex)}.highlight .s1{color:var(--syntax-literal-string)}.highlight .ss{color:var(--syntax-literal-string-symbol)}.highlight .bp{color:var(--syntax-name-builtin-pseudo)}.highlight .vc{color:var(--syntax-name-variable)}.highlight .vg{color:var(--syntax-name-variable)}.highlight .vi{color:var(--syntax-name-variable)}.highlight .il{color:var(--syntax-literal-number)}:root{--bg-color: #FFF;--text-color: #333;--text-color-light: #777;--text-color-headings: black;--link-color: #D00;--header-border-color: black;--code-bg: #f8f8f8;--code-border: #eee;--terminal-bg: #333;--terminal-text: #FFF;--footer-bg: #f8f8f8;--muted-text: #999;--navi-bg: transparent;--navi-text: #000;--navi-hover-bg: #000;--navi-hover-text: #FFF;--active-link: #444;--hr-color: #ccc;--article-border: #e7e7e7;--button-bg: #eee;--button-text: #333;--quote-bg: #f7f7f7;--quote-border: #5268d8;--quote-text: #555;--syntax-bg: #fff;--syntax-text: #333;--syntax-comment: #998;--syntax-error-text: #a61717;--syntax-error-bg: #e3d2d2;--syntax-keyword: #FF1493;--syntax-operator: var(--text-color);--syntax-comment-ml: #008200;--syntax-comment-preproc: #008200;--syntax-comment-single: #008200;--syntax-comment-special: #008200;--syntax-generic-deleted-text: #000;--syntax-generic-deleted-bg: #fdd;--syntax-generic-error: #a00;--syntax-generic-heading: #999;--syntax-generic-inserted-text: #000;--syntax-generic-inserted-bg: #dfd;--syntax-generic-output: #888;--syntax-generic-prompt: #555;--syntax-generic-subheading: #aaa;--syntax-generic-traceback: #a00;--syntax-keyword-type: #458;--syntax-literal-number: #099;--syntax-literal-string: #d14;--syntax-name-attribute: #008080;--syntax-name-builtin: #0086B3;--syntax-name-class: #458;--syntax-name-constant: #008080;--syntax-name-entity: #800080;--syntax-name-exception: #900;--syntax-name-function: #900;--syntax-name-namespace: #555;--syntax-name-tag: #000080;--syntax-name-variable: #008080;--syntax-text-whitespace: #bbb;--syntax-literal-string-regex: #009926;--syntax-literal-string-symbol: #990073;--syntax-name-builtin-pseudo: #999}[data-theme="dark"]{--bg-color: #222;--text-color: #ccc;--text-color-light: #aaa;--text-color-headings: #eee;--link-color: #ff8f8f;--header-border-color: #eee;--code-bg: #333;--code-border: #555;--terminal-bg: #1e1e1e;--terminal-text: #ccc;--footer-bg: #333;--muted-text: #888;--navi-bg: transparent;--navi-text: #eee;--navi-hover-bg: #eee;--navi-hover-text: #000;--active-link: #ddd;--hr-color: #555;--article-border: #444;--button-bg: #555;--button-text: #eee;--quote-bg: #2b2b2b;--quote-border: #6578e6;--quote-text: #ddd;--syntax-bg: #282a36;--syntax-text: #f8f8f2;--syntax-comment: #6272a4;--syntax-error-text: #ff5555;--syntax-error-bg: #44475a;--syntax-keyword: #ff79c6;--syntax-operator: #f8f8f2;--syntax-comment-ml: #6272a4;--syntax-comment-preproc: #ff79c6;--syntax-comment-single: #6272a4;--syntax-comment-special: #6272a4;--syntax-generic-deleted-text: #ff5555;--syntax-generic-deleted-bg: #44475a;--syntax-generic-error: #ff5555;--syntax-generic-heading: #f8f8f2;--syntax-generic-inserted-text: #50fa7b;--syntax-generic-inserted-bg: #44475a;--syntax-generic-output: #8be9fd;--syntax-generic-prompt: #50fa7b;--syntax-generic-subheading: #f8f8f2;--syntax-generic-traceback: #ff5555;--syntax-keyword-type: #8be9fd;--syntax-literal-number: #bd93f9;--syntax-literal-string: #f1fa8c;--syntax-name-attribute: #50fa7b;--syntax-name-builtin: #8be9fd;--syntax-name-class: #8be9fd;--syntax-name-constant: #bd93f9;--syntax-name-entity: #bd93f9;--syntax-name-exception: #ff79c6;--syntax-name-function: #50fa7b;--syntax-name-namespace: #f8f8f2;--syntax-name-tag: #ff79c6;--syntax-name-variable: #f8f8f2;--syntax-text-whitespace: #6272a4;--syntax-literal-string-regex: #f1fa8c;--syntax-literal-string-symbol: #bd93f9;--syntax-name-builtin-pseudo: #8be9fd}html{scrollbar-gutter:stable}body{padding-bottom:0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;min-height:100vh;line-height:1.6;display:flex;flex-direction:column;margin:0;background-color:var(--bg-color);color:var(--text-color);transition:background-color 0.3s ease, color 0.3s ease}a{text-decoration:none;color:var(--link-color)}a:hover{text-decoration:none}hr{border-bottom:1px solid var(--hr-color);border-top-style:none;border-left-style:none;border-right-style:none}h1,h2,h3,h4,.links{font-family:"Open Sans", "Helvetica Neue", Arial, sans-serif}h1,h2{font-weight:700}h1 a,h2 a{color:var(--text-color-headings);text-decoration:none}h1 a:hover,h1 a:hover,h2 a:hover,h2 a:hover{text-decoration:underline}em{font-style:italic}.wrapper{max-width:980px;margin:0 auto;padding:0 30px;flex:1;display:grid;grid-template-columns:11em minmax(0, 1fr);column-gap:1em;grid-template-areas:"navi header" "navi content";align-items:start;row-gap:0;grid-template-rows:auto 1fr}.header{grid-area:header;padding:40px 0 0 0;margin:0 0 0 0;display:flex;justify-content:center;align-items:center;text-align:center}.header .site-title{font-weight:700;font-size:25px;line-height:normal;flex-grow:0;max-width:100%;padding-bottom:10px;text-align:center}.header .site-title a{color:var(--text-color-headings);text-decoration:none}.header .site-title a:hover{text-decoration:underline}.header .site-title a,.header .site-title img{vertical-align:middle}.header .site-title h1,.header .site-title h4{margin:0;word-break:break-word;max-width:100%;display:inline-block;border-bottom:2px solid var(--header-border-color);padding-bottom:10px}.header .links{margin-top:10px;font-size:16px;vertical-align:middle;line-height:normal;color:var(--text-color-light);padding-left:1px;display:none}.header .links a{text-decoration:none;color:var(--text-color-light);font-weight:600;margin-right:10px}.header .links a:hover{text-decoration:underline}.header .links a.active{color:var(--active-link)}.header .links img{vertical-align:top;margin-right:2px}#theme-toggle{position:fixed;bottom:20px;right:20px;z-index:1000;background:var(--button-bg);border:1px solid var(--code-border);border-radius:50%;width:45px;height:45px;display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:1.5em;color:var(--button-text);box-shadow:0 2px 5px rgba(0,0,0,0.2);transition:background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease}#theme-toggle .icon-moon{display:none}html[data-theme='dark'] #theme-toggle .icon-sun{display:none}html[data-theme='dark'] #theme-toggle .icon-moon{display:inline}.content{grid-area:content;width:100%;max-width:100%;box-sizing:border-box;padding-top:0;overflow:hidden}.content.posts-page{padding-top:20px}.articles .article-author{margin-bottom:40px;padding-top:20px;font-size:14px;border-top:1px solid var(--article-border);overflow:auto}.articles .article-author .avatar{float:left}.articles .article-author .name{margin-top:5px;float:left}.articles .article-author h4{font-size:18px;margin-bottom:6px}.articles .article-author h4 b{font-weight:600}.articles .article-author img{border-radius:50%;vertical-align:middle;margin-right:2em}.articles .article-author span{margin-right:10px}.navi{grid-area:navi;width:11em;min-width:11em;margin-left:-1em;margin-top:89px;float:none;text-transform:uppercase;font-family:"Electrolize",sans-serif;box-sizing:border-box}.navi a{display:block;width:100%;color:var(--navi-text);background-color:var(--navi-bg);font-size:1em;padding:.3em .6em;text-align:right;box-sizing:border-box;white-space:nowrap}.navi a:hover,.navi a.active{color:var(--navi-hover-text);background-color:var(--navi-hover-bg)}.entry{overflow:hidden;margin:0 0 10px 0}.entry h1{font-weight:700}.entry .entry-date,.entry .entry-content{float:left}.entry .entry-content{width:100%;overflow:hidden}.entry h1{font-size:26px;line-height:30px;margin-bottom:10px}.entry .entry-body{margin:1em 0 1em 0;font-size:16px;line-height:28px;color:var(--text-color)}.entry .entry-body strong,.entry .entry-body b{font-weight:600}.entry .entry-body p{margin:22px 0}.entry .entry-body p.caption{font-size:14px;text-align:center;font-style:italic;margin-top:-5px;display:block}.entry .entry-body h2{font-size:18px}.entry .entry-body ul{margin:15px 0 15px 10px}.entry .entry-body ul li{list-style:disc;margin-left:2em}.entry .entry-body img{margin:10px 0 10px 0;max-width:100%;display:block}.entry .entry-body blockquote{margin:28px 0;padding:14px 20px;border-left:5px solid var(--quote-border);background:var(--quote-bg);color:var(--quote-text);font-size:1.03em;font-style:italic}.entry .entry-body blockquote p{margin:0;color:var(--quote-text)}.entry .entry-body blockquote p+p{margin-top:12px}.entry .entry-body blockquote a{color:var(--link-color)}.entry .entry-body table{width:100%;margin:20px 0;border:1px solid var(--article-border);border-collapse:collapse}.entry .entry-body table th,.entry .entry-body table td{border:1px solid var(--article-border);padding:8px 12px;text-align:left}.entry .entry-body table th{background-color:var(--code-bg);font-weight:600}.entry .entry-body table tr:nth-child(even){background-color:var(--code-bg)}.entry pre{line-height:24px;border:2px solid var(--code-border);background-color:var(--code-bg);padding:10px 12px;white-space:pre;overflow-x:auto;font-size:14px;max-width:100%;box-sizing:border-box}.entry pre code{border:0;padding-right:0;padding-left:0;font-size:14px;white-space:pre}.entry .highlight{max-width:100%;overflow-x:auto}.entry .highlight pre{background:var(--syntax-bg)}.entry pre.terminal{border:1px solid var(--header-border-color);background-color:var(--terminal-bg);color:var(--terminal-text);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.entry .list-container .text-muted{color:var(--muted-text)}.entry .list-container a{text-decoration:none}.entry .list-container ul li{list-style-type:none}.post .entry-body h2,.post .entry-body h3,.post .entry-body h4,.post .entry-body h5,.post .entry-body h6{margin-top:25px}.post .entry-body figure.highlight{-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0;margin-before:0;margin-after:0;margin-start:0;margin-end:0}.cnzz a{display:none}.article-meta{text-align:right;margin:15px 0 10px 0;color:var(--muted-text)}.page{margin-top:5px}.page .entry-body{margin-top:0px}.page .entry-body .nav-tabs-horizontal{overflow:hidden;margin-top:0px}.page .entry-body .nav-tabs-horizontal li{float:left}.page .entry-body h1,.page .entry-body h2,.page .entry-body h3,.page .entry-body h4,.page .entry-body h5,.page .entry-body h6{margin-top:20px}.page .entry-body .list-container{padding-top:10px}.article-list{margin:4px 0 0 0;padding-left:1.4em}.article-list .list-year{font-size:20px;height:30px;line-height:30px}.article-list .list-item{font-size:16px;margin-left:2em;line-height:30px}.article-list .list-item span{color:var(--muted-text)}.article-list .list-item a{padding:.2em 1em}.empty-state{color:var(--muted-text);margin:0 0 1rem 0}.rss-subscribe{line-height:36px;margin:30px auto}.post-form__header{margin-bottom:15px}.post-form__header ul{margin:0.5em 0 0;padding-left:1.2em;color:var(--text-color-light)}.post-form__header ul li{margin-bottom:4px}.post-form{border:1px solid var(--code-border);background:var(--code-bg);border-radius:10px;padding:18px;display:flex;flex-direction:column;gap:16px}.post-form__section{display:flex;flex-direction:column;gap:10px}.post-form__grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit, minmax(230px, 1fr))}.post-form__inline{display:flex;flex-wrap:wrap;gap:14px;align-items:center}.field span{display:block;font-weight:600;color:var(--text-color-headings);margin-bottom:6px}.field small{display:block;color:var(--text-color-light);margin-top:4px}.post-form input[type="text"],.post-form input[type="password"],.post-form input[type="datetime-local"],.post-form select,.post-form textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--code-border);border-radius:6px;background:var(--bg-color);color:var(--text-color);font-size:15px;font-family:inherit}.post-form textarea{font-family:"IBM Plex Mono", monospace;min-height:200px}.post-form label.checkbox,.post-form label.radio{display:inline-flex;gap:8px;align-items:center;font-weight:600}.post-form .helper-text{color:var(--text-color-light);font-size:14px}.post-form__footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.file-preview{font-family:"IBM Plex Mono", monospace;color:var(--text-color-light)}.primary-btn{background:var(--link-color);color:#fff;border:none;border-radius:6px;padding:10px 14px;font-size:15px;cursor:pointer;transition:opacity 0.2s ease}.primary-btn:disabled{opacity:0.7;cursor:not-allowed}.status{margin-top:6px;padding:10px 12px;border-radius:6px;border:1px solid var(--code-border);background:var(--bg-color);color:var(--text-color)}.status--info{border-color:#c0c0c0}.status--success{border-color:#69b36d;background:#ecf7ee}.status--error{border-color:#c44b4b;background:#fbecec}.site-footer{margin-top:40px;padding:20px 0 30px;border-top:1px solid var(--article-border);background-color:var(--footer-bg)}.site-footer .wrapper{display:block}.site-footer .footer-content{text-align:center}.site-footer .footer-content p{margin:5px 0;color:var(--text-color-light)}.site-footer .footer-content a{color:var(--text-color-light);text-decoration:none}.site-footer .footer-content a:hover{text-decoration:underline}.toc-sidebar{position:fixed;top:100px;right:20px;width:280px;max-height:calc(100vh - 140px);background-color:var(--bg-color);border:1px solid var(--article-border);border-radius:8px;padding:0;z-index:100;overflow:hidden;transition:width 0.3s ease, padding 0.3s ease;box-shadow:0 2px 8px rgba(0,0,0,0.1)}.toc-sidebar .toc-header{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;border-bottom:1px solid var(--article-border);background-color:var(--code-bg)}.toc-sidebar .toc-title{font-weight:600;font-size:14px;color:var(--text-color-headings)}.toc-sidebar .toc-toggle{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center}.toc-sidebar .toc-toggle-icon{width:16px;height:16px;position:relative}.toc-sidebar .toc-toggle-icon::before,.toc-sidebar .toc-toggle-icon::after{content:'';position:absolute;background-color:var(--text-color);transition:transform 0.3s ease}.toc-sidebar .toc-toggle-icon::before{width:10px;height:2px;top:7px;left:3px}.toc-sidebar .toc-toggle-icon::after{width:2px;height:10px;top:3px;left:7px}.toc-sidebar .toc-list{list-style:none;margin:0;padding:10px 0;overflow-y:auto;max-height:calc(100vh - 200px)}.toc-sidebar .toc-item{margin:0}.toc-sidebar .toc-link{display:block;padding:6px 15px;color:var(--text-color-light);font-size:13px;line-height:1.4;text-decoration:none;border-left:2px solid transparent;transition:all 0.2s ease}.toc-sidebar .toc-link:hover{color:var(--text-color);background-color:var(--code-bg)}.toc-sidebar .toc-link.active{color:var(--link-color);border-left-color:var(--link-color);background-color:var(--code-bg)}.toc-sidebar .toc-h2 .toc-link{padding-left:25px;font-size:12px}.toc-sidebar .toc-h3 .toc-link{padding-left:35px;font-size:12px}.toc-sidebar.collapsed{width:44px}.toc-sidebar.collapsed .toc-header{padding:12px 14px;border-bottom:none}.toc-sidebar.collapsed .toc-title{display:none}.toc-sidebar.collapsed .toc-toggle-icon::after{transform:rotate(90deg);top:7px;left:3px;width:10px;height:2px}.toc-sidebar.collapsed .toc-list{display:none}@media all and (max-width: 1000px){.toc-sidebar{display:none}#site-title img{width:25px}.wrapper{display:block}.navi{display:none}.header .links{display:block}.header .links a{margin-right:2px;font-size:14px}.header .links .github-link{float:none}.header .links .github-link img{display:none}}@media all and (max-width: 600px){.wrapper{padding:0 10px}.header{margin-top:20px}.header .site-title{font-size:20px}.header .links{font-size:14px}.entry .entry-body{font-size:15px;line-height:25px}.entry .entry-body blockquote{padding:12px 15px}.article-list .list-item{font-size:15px;margin-left:1em}}
