*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#212121;background-color:#fff;font-family:lxgw wenkai,Roboto,lucida grande,lucida sans unicode,lucida,helvetica,hiragino sans gb,microsoft yahei,wenquanyi micro hei,sans-serif;font-size:18px;font-weight:300;line-height:1.8em}@media only screen and (max-width:768px){body{font-size:16px;line-height:1.6em}}a{font-weight:300;color:#428bca;text-decoration:none}a:focus,a:hover{text-decoration:underline}p{margin:2rem 0}h1,h2,h3,h4,h5,h6{font-family:lxgw wenkai,Roboto,palatino linotype,book antiqua,Palatino,Helvetica,STKaiti,SimSun,serif;font-weight:700;color:#000;color:#666}h1{font-size:30px;line-height:3.6rem}@media only screen and (max-width:768px){h1{font-size:24px;line-height:3.4rem}}article h1{background:-webkit-linear-gradient(45deg,#e5b751,#1677b3,#cc5595 80%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.about h1{margin-bottom:30px;margin-bottom:20px;padding:5px;border-bottom:1px LightGrey solid;width:98%;line-height:150%;color:#666!important;font-size:30px;line-height:3.6rem}@media only screen and (max-width:768px){.about h1{font-size:24px;line-height:3.4rem}}h2{font-size:26px;line-height:3.2rem}@media only screen and (max-width:768px){h2{font-size:20px;line-height:3rem}}h3{font-size:22px;line-height:2.8rem}@media only screen and (max-width:768px){h3{font-size:16px;line-height:2.6rem}}h4{font-size:18px;line-height:2.6rem}@media only screen and (max-width:768px){h4{font-size:12px;line-height:2.4rem}}h5{font-size:14px;line-height:2.4rem}@media only screen and (max-width:768px){h5{font-size:8px;line-height:2.2rem}}h6{font-size:14px;line-height:2.2rem}@media only screen and (max-width:768px){h6{font-size:6px;line-height:2rem}}b,strong{font-weight:700}pre{display:block;font-family:lxgw wenkai,Roboto,source code pro,lucida console,monospace;font-size:1.6rem;font-weight:400;line-height:2.6rem;margin:2rem 0;padding:2rem;overflow-x:auto}pre code{display:inline-block;background-color:inherit;color:inherit}code{font-family:lxgw wenkai,Roboto,source code pro,lucida console,monospace;font-size:1.6rem;font-weight:400;background-color:rgba(255,247,0,.88);color:#212121;padding:.2rem .4rem}blockquote{border-left:2px solid #e0e0e0;padding-left:2rem;line-height:2.2rem;font-weight:400;font-style:italic}th,td{padding:1.6rem}table{border-collapse:collapse}table td,table th{border:2px solid #000}table tr:first-child th{border-top:0}table tr:last-child td{border-bottom:0}table tr td:first-child,table tr th:first-child{border-left:0}table tr td:last-child,table tr th:last-child{border-right:0}img{max-width:100%}.wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.container{margin:0 auto;max-width:90rem;width:100%;padding-left:2rem;padding-right:2rem;width:60%}@media only screen and (max-width:768px){.container{width:90%}}.fab{font-weight:400}.fas{font-weight:700}.float-right{float:right}.float-left{float:left}.fab{font-weight:400}.fas{font-weight:900}.footer .container{color:#666;font-size:small}@media only screen and (max-width:768px){.footer .container{font-size:16px;line-height:1.6em}}a[href^="#fn:"],a[href^="#fnref:"]{text-decoration:none;color:orange}a[href^="#fn:"]:before{content:'['}a[href^="#fn:"]:after{content:']'}.footnotes{font-size:medium;overflow-wrap:break-word}.footnotes>hr{display:none}.article img{display:block;box-shadow:0 0 10px #555;border-radius:6px;margin-left:auto;margin-right:auto;margin-top:10px;margin-bottom:10px;-webkit-box-shadow:0 0 10px #555}.footer-taxonomy{margin:10px;font-size:medium}.dashboard{font-size:14px;text-shadow:1px 1px #b1b1b133;font-weight:200;font-style:oblique;text-transform:lowercase;color:#ccc}.dashboard .left{text-align:left}@media only screen and (max-width:768px){.dashboard .left{text-align:center}}.dashboard .right{text-align:right}@media only screen and (max-width:768px){.dashboard .right{text-align:center}}.dashboard a{text-decoration:none;color:#ccc}.dashboard a:hover{color:#999;font-size:15px}.article-content{border:1px solid lightgrey;font-family:lxgw wenkai,roboto,helvetica neue,helvetica,arial,heti hei,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol!important;padding-right:40px;padding-left:40px;padding-top:40px;padding-bottom:40px;margin-bottom:20px;max-width:none!important;font-size:20px!important;line-height:1.8!important;box-shadow:0 8px 32px rgba(0,0,0,.32)}.article-content a{margin:0 1px}@media only screen and (max-width:768px){.article-content{border:none;padding:0;margin-bottom:0;box-shadow:none;font-size:18px!important;line-height:1.6!important}}.heti blockquote{background-color:#f7f7f7!important;font-style:normal}.heti blockquote p{margin:10px 0;line-height:30px}.heti code{font-family:lxgw wenkai,roboto,helvetica neue,helvetica,arial,heti hei,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol!important}.my-skill{display:flex;justify-content:space-evenly;align-content:center;align-items:center}@media only screen and (max-width:768px){.my-skill{display:none}}.brand-ad{font-size:16px;line-height:1.5em;color:#777}@media only screen and (max-width:768px){.brand-ad{font-size:13px}}.brand-content{border-style:dotted;border-width:1px;padding:5px 15px;border-radius:5px;padding-bottom:10px;border-bottom:none}.brand-ad-link{text-align:right;margin-top:-12px;margin-right:8px;font-size:14px}@media only screen and (max-width:768px){.brand-ad-link{font-size:10px}}.brand-ad-link a{color:#777}.brand-ad-link-line{display:block;border-style:dotted;border-width:1px;border-top:none;border-left:none;border-right:none;margin-top:-13px;margin-bottom:25px;margin-right:72px;margin-left:3px}@media only screen and (max-width:768px){.brand-ad-link-line{margin-top:-8px;margin-right:51px;margin-left:2px}}div.notices{margin:2rem 0;position:relative}div.notices p{padding:15px;display:block;font-size:1.5rem;margin-top:0;margin-bottom:0;color:#666}div.notices p:first-child:before{position:absolute;top:2px;color:#fff;font-family:"font awesome 5 free";font-weight:900;content:"\f06a";left:10px}div.notices p:first-child:after{position:absolute;top:2px;color:#fff;left:2rem}div.notices.info p{border-top:30px solid #f0b37e;background:#fff2db}div.notices.info p:first-child:after{content:'Info'}div.notices.warning p{border-top:30px solid rgba(217,83,79,.8);background:#fae2e2}div.notices.warning p:first-child:after{content:'Warning'}div.notices.note p{border-top:30px solid #6ab0de;background:#e7f2fa}div.notices.note p:first-child:after{content:'Note'}div.notices.tip p{border-top:30px solid rgba(92,184,92,.8);background:#e6f9e6}div.notices.tip p:first-child:after{content:'Tip'}.markmap>svg{width:100%;height:400px;border-top:1px dashed transparent;border-bottom:1px dashed transparent;border-image:linear-gradient(to left,white,red,hotpink,violet,gold,white);border-image-slice:1%;font:300 14px/20px lxgw wenkai!important}@media only screen and (max-width:768px){.markmap>svg{height:230px}}.markmap>svg>g>g>foreignobject>div{font:300 14px/20px lxgw wenkai!important}*[id^=markmap-about-]>svg{height:800px}@media only screen and (max-width:768px){*[id^=markmap-about-]>svg{height:350px}}*[id^=markmap-software-engineering-at-google-culture-3]>svg{height:1000px}@media only screen and (max-width:768px){*[id^=markmap-software-engineering-at-google-culture-3]>svg{height:350px}}*[id^=markmap-software-engineering-at-google-process-0]>svg{height:1000px}@media only screen and (max-width:768px){*[id^=markmap-software-engineering-at-google-process-0]>svg{height:350px}}*[id^=markmap-software-engineering-at-google-process-2]>svg{height:1000px}@media only screen and (max-width:768px){*[id^=markmap-software-engineering-at-google-process-2]>svg{height:350px}}*[id^=markmap-software-engineering-at-google-tool-0]>svg{height:500px}@media only screen and (max-width:768px){*[id^=markmap-software-engineering-at-google-tool-0]>svg{height:300px}}*[id^=markmap-authentication-and-authorization-in-a-distributed-system-0]>svg{height:600px}@media only screen and (max-width:768px){*[id^=markmap-authentication-and-authorization-in-a-distributed-system-0]>svg{height:350px}}.mermaid{width:100%;height:auto;text-align:center;border-top:1px dashed transparent;border-bottom:1px dashed transparent;border-image:linear-gradient(to left,white,red,hotpink,violet,gold,white);border-image-slice:1%}.mermaid text{font-family:lxgw wenkai,roboto!important}figure a{text-decoration:auto!important;margin:0!important}a[href$="/self/"]{color:#e5b751!important}a[href$="https://www.myreader.io/"]{color:#e5b751!important}a[href$="/dev/"]{color:#1677b3!important}a[href$="https://www.free4.chat/"]{color:#1677b3!important}a[href$="/money/"]{color:#cc5595!important}a[href$="https://www.myinvestpilot.com/"]{color:#cc5595!important}.share-twitter-container{text-align:center;background:-webkit-linear-gradient(45deg,#e5b751,#1677b3,#cc5595 80%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.share-twitter-container a{display:inline}@media only screen and (max-width:768px){.share-twitter-container a{display:block}}.share-twitter-container-dashed{display:inline}@media only screen and (max-width:768px){.share-twitter-container-dashed{display:none}}.content{flex:1;display:flex;margin-top:1.6rem;margin-bottom:3.2rem}.content article header{margin-top:6.4rem;margin-bottom:1rem}@media only screen and (max-width:768px){.content article header{margin-top:10px;margin-bottom:10px}}.content article header h1{font-size:30px;line-height:4.6rem;margin:0}@media only screen and (max-width:768px){.content article header h1{font-size:24px;line-height:4.4rem}}.content .post .post-title{margin-bottom:.75em}.content .post .post-meta i{text-align:center;width:1.6rem;margin-left:0;margin-right:.5rem}.content .post .post-meta .date{font-size:16px}@media only screen and (max-width:768px){.content .post .post-meta .date{font-size:14px}}.content .post .post-meta .date .posted-on{margin-left:0;margin-right:1.5rem}.content .post .post-meta .tags{font-size:16px}@media only screen and (max-width:768px){.content .post .post-meta .tags{font-size:14px}}.content .post .post-meta .categories{font-size:16px}@media only screen and (max-width:768px){.content .post .post-meta .categories{font-size:14px}}.content figure{margin:0;padding:0}.content figcaption p{text-align:center;font-style:italic;font-size:1.6rem;margin:0}.avatar img{width:20rem;height:auto;border-radius:50%}@media only screen and (max-width:768px){.avatar img{width:10rem}}.avatar img:hover{animation:shake .82s cubic-bezier(.36,.07,.19,.97)both;transform:translate3d(0,0,0);backface-visibility:hidden;perspective:1000px}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.list ul{margin:3.2rem 0;list-style:none;padding:0}.list ul li{font-size:1.8rem;line-height:1.8}@media only screen and (max-width:768px){.list ul li{margin:1.6rem 0;line-height:1.6}}.list ul li .date{display:inline-block;width:20rem;text-align:right;margin-right:3rem}@media only screen and (max-width:768px){.list ul li .date{display:none}}.list ul li .title{font-size:1.8rem;color:#428bca;font-family:lxgw wenkai,Roboto,palatino linotype,book antiqua,Palatino,Helvetica,STKaiti,SimSun,serif;font-weight:700}.centered{display:flex;align-items:center;justify-content:center}.centered .about{text-align:center}.centered .about h1{margin-top:2rem;margin-bottom:.5rem}.centered .about h2{margin-top:1rem;margin-bottom:.5rem;font-size:2.4rem}@media only screen and (max-width:768px){.centered .about h2{font-size:2rem}}.centered .about ul{list-style:none;margin:3rem 0 1rem;padding:0}.centered .about ul li{display:inline-block;position:relative}.centered .about ul li a{color:#212121;text-transform:uppercase;margin-left:1rem;margin-right:1rem;font-size:1.6rem}.centered .about ul li a:hover,.centered .about ul li a:focus{color:#428bca}@media only screen and (max-width:768px){.centered .about ul li a{font-size:1.4rem}}.centered .about ul li a i{font-size:3.2rem}.centered .error{text-align:center}.centered .error h1{margin-top:2rem;margin-bottom:.5rem;font-size:4.6rem}@media only screen and (max-width:768px){.centered .error h1{font-size:3.2rem}}.centered .error h2{margin-top:2rem;margin-bottom:3.2rem;font-size:3.2rem}@media only screen and (max-width:768px){.centered .error h2{font-size:2.8rem}}.navigation{height:6rem;width:100%}.navigation a,.navigation span{display:inline;font-size:1.5rem;font-family:lxgw wenkai,Roboto,palatino linotype,book antiqua,Palatino,Helvetica,STKaiti,SimSun,serif;font-weight:700;line-height:6rem;color:#212121}@media only screen and (max-width:768px){.navigation a,.navigation span{font-size:1.3rem}}.navigation a{color:#666}.navigation a:hover,.navigation a:focus{color:#428bca}.navigation .navigation-title{background:-webkit-linear-gradient(45deg,#e5b751,#1677b3,#cc5595 80%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.navigation .navigation-list{float:right;list-style:none;margin-bottom:0;margin-top:0}@media only screen and (max-width:768px){.navigation .navigation-list{position:absolute;top:6rem;right:0;z-index:5;visibility:hidden;opacity:0;padding:0;max-height:0;width:100%;background-color:#fff;border-top:solid 2px #e0e0e0;border-bottom:solid 2px #e0e0e0;transition:opacity .25s,max-height .15s linear}}.navigation .navigation-list .navigation-item{min-width:60px;float:left;margin:0;position:relative}@media only screen and (max-width:768px){.navigation .navigation-list .navigation-item{float:none!important;text-align:center}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{line-height:5rem}}.navigation .navigation-list .navigation-item a,.navigation .navigation-list .navigation-item span{margin-left:1rem;margin-right:1rem}.navigation .navigation-list .menu-separator{min-width:10px!important}@media only screen and (max-width:768px){.navigation .navigation-list .menu-separator{border-top:2px solid #212121;margin:0 8rem}.navigation .navigation-list .menu-separator span{display:none}}.navigation #menu-toggle{display:none}@media only screen and (max-width:768px){.navigation #menu-toggle:checked+label{color:#e0e0e0}.navigation #menu-toggle:checked+label+ul{visibility:visible;opacity:1;max-height:100rem}}.navigation .menu-button{display:none}@media only screen and (max-width:768px){.navigation .menu-button{display:block;font-size:2.4rem;font-weight:400;line-height:6rem;color:#212121;cursor:pointer}.navigation .menu-button:hover,.navigation .menu-button:focus{color:#428bca}}.pagination{margin-top:6rem;text-align:center;font-family:lxgw wenkai,Roboto,palatino linotype,book antiqua,Palatino,Helvetica,STKaiti,SimSun,serif}.pagination li{display:inline;text-align:center;font-weight:700}.pagination li span{margin:0;text-align:center;width:3.2rem}.pagination li a{font-weight:300}.pagination li a span{margin:0;text-align:center;width:3.2rem}.footer{width:100%;text-align:center;line-height:2rem;margin-bottom:1rem}.footer a{color:#428bca}