:root{--text-color:#000;--background-color:#fff;--section-divider-color:#eee;--link-color:#2a7ae2;--link-visited-color:#1756a9;--link-hover-color:#000;--header-link-color:#2b3c69;--secondary-color:#1678D3;--grey-color:#828282;--grey-color-light:#e8e8e8;--grey-color-dark:#424242;--menu-bar-color:#424242;--menu-link-color:#1756a9;--menu-link-hover-background:#eee;--menu-shaddow-color:#ddd;--code-background-color:#f4f0f0;--code-border-color:#f4f0f0;--hero-override-color:#0000;--hero-text-background-color:#FFF8;--hero-text-border-color:#FFFA;--hero-text-color:#2C3C69;--hero-text-highlight-color:#de8216}@media(prefers-color-scheme:dark){:root{--text-color:#eee;--background-color:#000;--section-divider-color:#666;--link-color:#b1d3ff;--link-visited-color:#9fc9ff;--link-hover-color:#fff;--header-link-color:#a4b3db;--secondary-color:#1678D3;--grey-color:#828282;--grey-color-light:#cccccc;--grey-color-dark:#424242;--menu-bar-color:#9c9c9c;--menu-link-color:#90abce;--menu-link-hover-background:#444;--menu-shaddow-color:#111;--code-background-color:#222;--code-border-color:#444;--hero-override-color:#0008;--hero-text-background-color:#0004;--hero-text-border-color:#0004;--hero-text-color:#ddd;--hero-text-highlight-color:#faab52}}body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{font-family:-apple-system,system-ui,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,sans-serif;font-size:16px;line-height:1.5;font-weight:400;color:var(--text-color);background-color:var(--background-color);-webkit-text-size-adjust:100%;min-width:300px}@media screen and (max-width:730px){body{font-size:14px}}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure,.highlight{margin-bottom:16px}img{max-width:100%;vertical-align:middle;margin-top:10px;margin-bottom:18px}figure>img{display:block}figcaption{font-size:14px}ul,ol{margin-left:32px}h1,h2,h3,h4,h5,h6{font-weight:300}@media screen and (max-width:730px){h1{font-size:1.4em;margin-top:30px}}h2.through-line{font-size:14px;display:table;white-space:nowrap;width:100%;margin-bottom:15px;text-transform:uppercase;letter-spacing:.09em;font-weight:700;color:var(--grey-color);margin-top:20px}h2.through-line a{color:var(--header-link-color);text-decoration:none}h2.through-line a:hover{color:var(--header-link-color);text-decoration:underline}@media screen and (max-width:800px){h2.through-line a:hover{text-decoration:none}}h2.through-line:after{background-clip:padding;background-image:linear-gradient(transparent 47%,var(--section-divider-color) 48%,var(--section-divider-color) 52%,transparent 52%);content:"";display:table-cell;width:100%;border-left:10px solid var(--background-color)}h4{font-weight:700;margin-bottom:10px}a{color:var(--link-color);text-decoration:none}a:visited{color:var(--link-visited-color)}a:hover{color:var(--link-hover-color);text-decoration:underline}@media screen and (max-width:800px){a:hover{text-decoration:none}}blockquote{color:var(--grey-color);border-left:4px solid var(--section-divider-color);padding-left:16px;font-size:18px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}pre,code{font-size:15px;border:1px solid var(--code-border-color);border-radius:3px;background-color:var(--code-background-color);margin-top:20px;margin-bottom:40px;font-family:Menlo,Monaco,courier new,monospace}@media screen and (max-width:800px){pre,code{font-size:14px}}@media screen and (max-width:730px){pre,code{font-size:12px}}code{padding:1px 5px}pre{padding:8px 12px;overflow-x:scroll}pre>code{border:0;padding-right:0;padding-left:0}.wrapper,.hero.slim div.container{max-width:-webkit-calc(1e3px - (32px * 2));max-width:calc(1e3px - (32px * 2));margin-right:auto;margin-left:auto;padding-right:32px;padding-left:32px;position:relative}@media screen and (max-width:800px){.wrapper,.hero.slim div.container{max-width:-webkit-calc(800px - (32px));max-width:calc(800px - (32px));padding-right:16px;padding-left:16px}}.wrapper:after,.hero.slim div.container:after{content:"";display:table;clear:both}.icon>svg{display:inline-block;width:16px;height:16px;vertical-align:middle}.icon>svg path{fill:var(--grey-color)}.flex{display:flex}.flex1{flex:1}.flex2{flex:2}.flex3{flex:3}.dib{display:inline-block}.di{display:inline}.justify{text-align:justify}.tal{text-align:left}.tar{text-align:right}.mlr20{margin-left:20%;margin-right:20%}.mr1m{margin-right:1em}.ml1m{margin-left:1em}.page-content{padding-top:32px}@media screen and (max-width:800px){.page-content{padding-top:0}}.page-heading{font-size:20px}.post-list{margin-left:0;list-style:none}.post-list h2{margin-bottom:5px}.post-list>li{margin-bottom:32px}.post-meta{font-size:14px;color:var(--grey-color)}.post-link{display:block;font-size:28px}@media screen and (max-width:730px){.post-link{font-size:20px}}.post-header{margin-bottom:32px}.post-title,h1{font-size:42px;letter-spacing:-1px;line-height:1}@media screen and (max-width:800px){.post-title,h1{font-size:36px;margin-top:26px}}@media screen and (max-width:730px){.post-title,h1{font-size:30px;margin-top:10px}}.post-content{margin-bottom:64px}.post-content h2{font-size:32px}@media screen and (max-width:800px){.post-content h2{font-size:28px}}@media screen and (max-width:730px){.post-content h2{font-size:24px}}.post-content h3{font-size:26px}@media screen and (max-width:800px){.post-content h3{font-size:22px}}@media screen and (max-width:730px){.post-content h3{font-size:20px}}.post-content h4{font-size:20px}@media screen and (max-width:800px){.post-content h4{font-size:18px}}@media screen and (max-width:730px){.post-content h4{font-size:16px}}.post-comments{margin-top:40px;margin-bottom:30px;padding-top:20px;border-top:2px solid var(--section-divider-color)}.home{margin-top:0}.home .post-link{font-size:22px}.home .posts-container{width:90%;vertical-align:top;margin:auto}@media screen and (max-width:730px){.home .posts-container{width:100%;margin-left:0%}}#skiplink{position:absolute;clip:rect(1px 1px 1px 1px);overflow:hidden;height:1px}#skiplink:focus{position:static;clip:auto;overflow:visible;height:auto}#header{min-height:108px;position:relative}#header .site-logo{top:7px;left:0;line-height:56px;position:absolute}#header .site-logo img{max-width:250px;margin-bottom:18px;margin-top:10px}#header #site-nav{position:absolute;top:10px;right:0}#header #site-nav #menu-toggler{display:none;width:26px;margin-top:20px;margin-right:20px;padding:10px;cursor:pointer}#header #site-nav #menu-toggler .top-bar,#header #site-nav #menu-toggler .middle-bar,#header #site-nav #menu-toggler .bottom-bar{width:26px;display:block;height:2px;background-color:var(--menu-bar-color);-webkit-transition:all .3s ease;transition:all .3s ease}#header #site-nav #menu-toggler .middle-bar,#header #site-nav #menu-toggler .bottom-bar{margin-top:5px}#header #site-nav #menu{width:100%;white-space:nowrap}#header #site-nav #menu .menu-list{display:inline-block;list-style:none;margin:25px 0 0;padding:0;position:relative}#header #site-nav #menu .menu-list .menu-item{display:inline-block;vertical-align:middle;padding:10px 20px;margin:0}#header #site-nav #menu .menu-list .menu-item a{font-size:18px;color:var(--menu-link-color)}#header #site-nav #menu .menu-list .menu-item.has-children{position:relative}#header #site-nav #menu .menu-list .menu-item.has-children .children-indicator{font-size:small;display:inline-block;transform:rotate(90deg);-webkit-transition:all .3s ease;transition:all .3s ease}#header #site-nav #menu .menu-list .menu-item.has-children .menu-children{right:0;top:auto;width:inherit;height:0;text-align:right;padding:10px 20px;border:1px solid var(--background-color);background-color:var(--background-color);position:absolute;overflow:hidden;z-index:3;-webkit-transition:all .3s;transition:all .3s}#header #site-nav #menu .menu-list .menu-item.has-children .menu-children .menu-item{display:block;padding:10px}#header #site-nav #menu .menu-list .menu-item.has-children:hover .children-indicator{transform:rotate(0)}#header #site-nav #menu .menu-list .menu-item.has-children:hover .menu-children{height:90px;border:1px solid var(--background-color)}@media screen and (max-width:800px){#header{min-height:98px}#header .site-logo img{max-width:220px}#header #site-nav{right:0;width:350px;text-align:right}#header #site-nav #menu-toggler{display:inline-block}#header #site-nav #menu-toggler .top-bar,#header #site-nav #menu-toggler .middle-bar,#header #site-nav #menu-toggler .bottom-bar{opacity:1;width:26px;display:block;height:2px;background-color:var(--menu-bar-color);-webkit-transition:all .3s ease;transition:all .3s ease}#header #site-nav #menu-toggler .middle-bar,#header #site-nav #menu-toggler .bottom-bar{margin-top:5px}#header #site-nav #menu{width:100%;white-space:nowrap}#header #site-nav #menu .menu-list{display:block;background-color:var(--background-color);margin:15px 20px 0 0;z-index:3;-webkit-transition:all .3s ease;transition:all .3s ease;height:0;overflow:hidden;border:1px solid var(--background-color);box-shadow:0 0 0 var(--background-color)}#header #site-nav #menu .menu-list .menu-item{display:block;text-align:left;padding:0}#header #site-nav #menu .menu-list .menu-item .menu-link{font-size:16px;color:var(--menu-link-color);display:block;padding:10px 20px}#header #site-nav #menu .menu-list .menu-item .menu-link:hover{background:var(--menu-link-hover-background)}#header #site-nav #menu .menu-list .menu-item.has-children{position:relative}#header #site-nav #menu .menu-list .menu-item.has-children .children-indicator{transform:rotate(0)}#header #site-nav #menu .menu-list .menu-item.has-children .menu-children{width:100%;height:auto;text-align:left;padding:0;margin-top:0;border:none}#header #site-nav #menu .menu-list .menu-item.has-children .menu-children .menu-item{display:block;padding:0}#header #site-nav #menu .menu-list .menu-item.has-children .menu-children .menu-item .menu-link{padding:10px 20px 10px 60px}#header #site-nav #menu .menu-list .menu-item.has-children:hover .children-indicator{transform:rotate(0)}#header #site-nav #menu .menu-list .menu-item.has-children:hover .menu-children{height:auto;border:none}#header #site-nav.open #menu-toggler .top-bar{-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transform-origin:10% 10%;transform-origin:10% 10%}#header #site-nav.open #menu-toggler .middle-bar{opacity:0}#header #site-nav.open #menu-toggler .bottom-bar{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:10% 90%;transform-origin:10% 90%}#header #site-nav.open #menu .menu-list{height:180px;border:1px solid var(--background-color);box-shadow:0 0 10px var(--menu-shaddow-color)}}@media screen and (max-width:730px){#header .site-logo img{max-width:200px}#header #site-nav{width:100%}#header #site-nav #menu{width:100%;white-space:nowrap}#header #site-nav #menu .menu-list{margin:15px 0 0}#header #site-nav #menu .menu-list .menu-item .menu-link{padding:15px 0 15px 35px}#header #site-nav #menu .menu-list .menu-item.has-children{position:relative}#header #site-nav #menu .menu-list .menu-item.has-children .menu-children .menu-item .menu-link{padding:15px 0 15px 70px}#header #site-nav.open #menu .menu-list{height:220px;border:1px solid transparent;box-shadow:0 5px 5px var(--menu-shaddow-color)}}.hero{position:relative}.hero .hero-overide{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--hero-override-color)}.hero.tall{padding:55px 0;text-align:center;background:var(--hero-text-background-color)url(/images/topbar/3.jpg)no-repeat 50%;background-size:cover}@media screen and (max-width:730px){.hero.tall{padding:50px 0}}.hero.tall div.container{position:relative;background-color:var(--hero-text-background-color);border:1px solid var(--hero-text-border-color);border-radius:10px;padding:30px;width:90%;max-width:950px;margin:0 auto}@media screen and (max-width:730px){.hero.tall div.container{max-width:90%;border-radius:0;padding:10px}}.hero.tall h1{font-weight:400;font-size:40px;color:var(--hero-text-color);line-height:1.4;margin:0 0 .35em}@media screen and (max-width:730px){.hero.tall h1{font-size:26px}}.hero.tall h1 span{color:var(--hero-text-highlight-color);font-weight:700}.hero.tall h2{font-weight:400;margin-bottom:0;font-size:20px}.hero.tall p{color:var(--hero-text-color)}.hero.slim{padding-top:25px;padding-bottom:18px;text-align:center;background:var(--hero-text-background-color)url(/images/topbar/3.jpg)no-repeat 50%;background-size:cover}.hero.slim div.container{text-align:left;width:90%;margin:0 auto}@media screen and (max-width:730px){.hero.slim div.container{max-width:90%;border-radius:0}}.hero.slim h1{font-weight:400;margin-bottom:10px;font-size:46px;display:inline-block;width:auto;color:var(--hero-text-color);background-color:var(--hero-text-background-color);border-radius:8px;padding:10px 20px}@media screen and (max-width:730px){.hero.slim h1{font-size:30px;margin-top:10px}}.hero.slim h1 span{color:var(--secondary-color)}.comments-container{position:relative}.comments-container .leancloud_visitors{position:absolute;bottom:0;left:0}.comments-container .leancloud_visitors .post-meta-item-text,.comments-container .leancloud_visitors .leancloud-visitors-count{color:color-mix(in srgb,var(--text-color) 30%,transparent)}#footer{border-top:1px solid var(--section-divider-color);padding-top:10px}#footer ul{list-style:none;margin-left:0}#footer .wrapper,#footer .hero.slim div.container,.hero.slim #footer div.container{font-size:15px;color:var(--text-color);margin:auto}#footer .wrapper .left,#footer .hero.slim div.container .left,.hero.slim #footer div.container .left,#footer .wrapper .right,#footer .hero.slim div.container .right,.hero.slim #footer div.container .right{margin-bottom:16px;padding-left:16px;width:-webkit-calc(100% - (32px/2));width:calc(100% - (32px/2))}#footer .wrapper .left span.item,#footer .hero.slim div.container .left span.item,.hero.slim #footer div.container .left span.item,#footer .wrapper .right span.item,#footer .hero.slim div.container .right span.item,.hero.slim #footer div.container .right span.item{height:35px;margin-bottom:15px}#footer .wrapper .left span.item,#footer .hero.slim div.container .left span.item,.hero.slim #footer div.container .left span.item{float:left;margin-right:15px}#footer .wrapper .right span.item,#footer .hero.slim div.container .right span.item,.hero.slim #footer div.container .right span.item{float:right;margin-left:15px}@media screen and (max-width:730px){#footer .wrapper .left span.item,#footer .hero.slim div.container .left span.item,.hero.slim #footer div.container .left span.item,#footer .wrapper .right span.item,#footer .hero.slim div.container .right span.item,.hero.slim #footer div.container .right span.item{margin:0;display:block;float:none}}#dev-icon{position:fixed;bottom:0;right:0;padding:0 8px;background:#de8216;font-weight:700;font-size:12px;color:#fff}.with-ratio{position:relative;width:100%;height:auto;max-width:600px;margin:0 auto 15px}.with-ratio:before{content:"";display:block}.with-ratio .content{position:absolute;top:0;bottom:0;left:0;right:0}.with-ratio.ratio-w1h1:before{padding-top:100%}.with-ratio.ratio-w16h9:before{padding-top:56.25%}.with-ratio.ratio-w16h10:before{padding-top:62.5%}.with-ratio.ratio-w2h1:before{padding-top:50%}.with-ratio.ratio-w1h2:before{padding-top:200%}.with-ratio.ratio-w4h3:before{padding-top:75%}.with-ratio.ratio-w5h3:before{padding-top:60%}.highlight{background:#fff}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:700}.highlight .o{font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:700}.highlight .kd{font-weight:700}.highlight .kp{font-weight:700}.highlight .kr{font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:700}.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}