.icon-sn-google{background-position:0 -28px}.icon-sn-bg-google{background-color:#4285f4;background-position:0 0}.fa-sn-google{color:#4285f4}.icon-sn-github{background-position:-28px -28px}.icon-sn-bg-github{background-color:#333;background-position:-28px 0}.fa-sn-github{color:#333}.icon-sn-weibo{background-position:-56px -28px}.icon-sn-bg-weibo{background-color:#e90d24;background-position:-56px 0}.fa-sn-weibo{color:#e90d24}.icon-sn-qq{background-position:-84px -28px}.icon-sn-bg-qq{background-color:#0098e6;background-position:-84px 0}.fa-sn-qq{color:#0098e6}.icon-sn-twitter{background-position:-112px -28px}.icon-sn-bg-twitter{background-color:#50abf1;background-position:-112px 0}.fa-sn-twitter{color:#50abf1}.icon-sn-facebook{background-position:-140px -28px}.icon-sn-bg-facebook{background-color:#4862a3;background-position:-140px 0}.fa-sn-facebook{color:#4862a3}.icon-sn-renren{background-position:-168px -28px}.icon-sn-bg-renren{background-color:#197bc8;background-position:-168px 0}.fa-sn-renren{color:#197bc8}.icon-sn-tqq{background-position:-196px -28px}.icon-sn-bg-tqq{background-color:#1f9ed2;background-position:-196px 0}.fa-sn-tqq{color:#1f9ed2}.icon-sn-douban{background-position:-224px -28px}.icon-sn-bg-douban{background-color:#279738;background-position:-224px 0}.fa-sn-douban{color:#279738}.icon-sn-weixin{background-position:-252px -28px}.icon-sn-bg-weixin{background-color:#00b500;background-position:-252px 0}.fa-sn-weixin{color:#00b500}.icon-sn-dotted{background-position:-280px -28px}.icon-sn-bg-dotted{background-color:#eee;background-position:-280px 0}.fa-sn-dotted{color:#eee}.icon-sn-site{background-position:-308px -28px}.icon-sn-bg-site{background-color:#00b500;background-position:-308px 0}.fa-sn-site{color:#00b500}.icon-sn-linkedin{background-position:-336px -28px}.icon-sn-bg-linkedin{background-color:#0077b9;background-position:-336px 0}.fa-sn-linkedin{color:#0077b9}[class*=icon-sn-]{display:inline-block;background-image:url('/static/blog/img/icon-sn.svg?3380ca96c860');background-repeat:no-repeat;width:28px;height:28px;vertical-align:middle;background-size:auto 56px}[class*=icon-sn-]:hover{opacity:.8;filter:alpha(opacity=80)}.btn-sn-google{background:#4285f4}.btn-sn-google:active,.btn-sn-google:focus,.btn-sn-google:hover{background:#2a75f3}.btn-sn-github{background:#333}.btn-sn-github:active,.btn-sn-github:focus,.btn-sn-github:hover{background:#262626}.btn-sn-weibo{background:#e90d24}.btn-sn-weibo:active,.btn-sn-weibo:focus,.btn-sn-weibo:hover{background:#d10c20}.btn-sn-qq{background:#0098e6}.btn-sn-qq:active,.btn-sn-qq:focus,.btn-sn-qq:hover{background:#0087cd}.btn-sn-twitter{background:#50abf1}.btn-sn-twitter:active,.btn-sn-twitter:focus,.btn-sn-twitter:hover{background:#38a0ef}.btn-sn-facebook{background:#4862a3}.btn-sn-facebook:active,.btn-sn-facebook:focus,.btn-sn-facebook:hover{background:#405791}.btn-sn-renren{background:#197bc8}.btn-sn-renren:active,.btn-sn-renren:focus,.btn-sn-renren:hover{background:#166db1}.btn-sn-tqq{background:#1f9ed2}.btn-sn-tqq:active,.btn-sn-tqq:focus,.btn-sn-tqq:hover{background:#1c8dbc}.btn-sn-douban{background:#279738}.btn-sn-douban:active,.btn-sn-douban:focus,.btn-sn-douban:hover{background:#228330}.btn-sn-weixin{background:#00b500}.btn-sn-weixin:active,.btn-sn-weixin:focus,.btn-sn-weixin:hover{background:#009c00}.btn-sn-dotted{background:#eee}.btn-sn-dotted:active,.btn-sn-dotted:focus,.btn-sn-dotted:hover{background:#e1e1e1}.btn-sn-site{background:#00b500}.btn-sn-site:active,.btn-sn-site:focus,.btn-sn-site:hover{background:#009c00}.btn-sn-linkedin{background:#0077b9}.btn-sn-linkedin:active,.btn-sn-linkedin:focus,.btn-sn-linkedin:hover{background:#0067a0}[class*=btn-sn-],[class*=btn-sn-]:active,[class*=btn-sn-]:focus,[class*=btn-sn-]:hover{border:none;color:#fff}.btn-sn-more{padding:0}.btn-sn-more,.btn-sn-more:active,.btn-sn-more:hover{box-shadow:none}[class*=btn-sn-] [class*=icon-sn-]{background-color:transparent}.codehilite .hll{background-color:#ffffcc}.codehilite{background:#ffffff}.codehilite .c{color:#177500}.codehilite .err{color:#000000}.codehilite .k{color:#A90D91}.codehilite .l{color:#1C01CE}.codehilite .n{color:#000000}.codehilite .o{color:#000000}.codehilite .ch{color:#177500}.codehilite .cm{color:#177500}.codehilite .cp{color:#633820}.codehilite .cpf{color:#177500}.codehilite .c1{color:#177500}.codehilite .cs{color:#177500}.codehilite .kc{color:#A90D91}.codehilite .kd{color:#A90D91}.codehilite .kn{color:#A90D91}.codehilite .kp{color:#A90D91}.codehilite .kr{color:#A90D91}.codehilite .kt{color:#A90D91}.codehilite .ld{color:#1C01CE}.codehilite .m{color:#1C01CE}.codehilite .s{color:#C41A16}.codehilite .na{color:#836C28}.codehilite .nb{color:#A90D91}.codehilite .nc{color:#3F6E75}.codehilite .no{color:#000000}.codehilite .nd{color:#000000}.codehilite .ni{color:#000000}.codehilite .ne{color:#000000}.codehilite .nf{color:#000000}.codehilite .nl{color:#000000}.codehilite .nn{color:#000000}.codehilite .nx{color:#000000}.codehilite .py{color:#000000}.codehilite .nt{color:#000000}.codehilite .nv{color:#000000}.codehilite .ow{color:#000000}.codehilite .mb{color:#1C01CE}.codehilite .mf{color:#1C01CE}.codehilite .mh{color:#1C01CE}.codehilite .mi{color:#1C01CE}.codehilite .mo{color:#1C01CE}.codehilite .sb{color:#C41A16}.codehilite .sc{color:#2300CE}.codehilite .sd{color:#C41A16}.codehilite .s2{color:#C41A16}.codehilite .se{color:#C41A16}.codehilite .sh{color:#C41A16}.codehilite .si{color:#C41A16}.codehilite .sx{color:#C41A16}.codehilite .sr{color:#C41A16}.codehilite .s1{color:#C41A16}.codehilite .ss{color:#C41A16}.codehilite .bp{color:#5B269A}.codehilite .vc{color:#000000}.codehilite .vg{color:#000000}.codehilite .vi{color:#000000}.codehilite .il{color:#1C01CE}#nprogress{pointer-events:none}#nprogress .bar{background:red;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0px;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:red;border-left-color:red;border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.comment-actions{display:flex;gap:15px;margin-top:10px;align-items:center}.like{display:flex;align-items:center}.like-btn{background:none;border:1px solid #ddd;border-radius:20px;padding:5px 12px;cursor:pointer;transition:all 0.3s ease;display:flex;align-items:center;gap:5px;font-size:12px;color:#666;text-decoration:none}.like-btn:hover{background-color:#f0f0f0;border-color:#999;color:#333;text-decoration:none}.like-btn:active{transform:scale(0.95)}.like-btn.liked{background-color:#ff6b6b;color:white;border-color:#ff6b6b;transform:scale(1.05)}.like-icon{font-size:14px;transition:transform 0.3s ease}.like-btn:hover .like-icon{transform:scale(1.2)}.like-count{font-size:12px;font-weight:bold;min-width:20px;text-align:center}.message{position:fixed;top:20px;right:20px;padding:12px 20px;border-radius:5px;color:white;font-weight:bold;z-index:1000;box-shadow:0 4px 12px rgba(0,0,0,0.15);max-width:300px;word-wrap:break-word}.message.success{background-color:#4CAF50;border-left:4px solid #45a049}.message.error{background-color:#f44336;border-left:4px solid #d32f2f}@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideOut{from{transform:translateX(0);opacity:1}to{transform:translateX(100%);opacity:0}}@keyframes likeAnimation{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}.like-btn.liked .like-icon{animation:likeAnimation 0.6s ease-in-out}@media (max-width:768px){.comment-actions{flex-direction:column;gap:10px;align-items:flex-start}.like-btn{padding:8px 15px;font-size:14px}.message{right:10px;left:10px;max-width:none}}@media (prefers-color-scheme:dark){.like-btn{border-color:#555;color:#ccc}.like-btn:hover{background-color:#333;border-color:#777;color:#fff}}.like-btn:focus{outline:2px solid #007cba;outline-offset:2px}.like-btn:focus:not(:focus-visible){outline:none}.like-btn.loading{opacity:0.6;cursor:not-allowed;pointer-events:none}.like-btn.loading .like-icon{animation:spin 1s linear infinite}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.article-actions{display:flex;gap:15px;margin-top:10px;align-items:center;padding:10px 0;border-top:1px solid #eee}.like-article{display:flex;align-items:center}.like-article-btn{border:none;border-radius:25px;padding:4px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500}.like-article-btn:hover{transform:translateY(-2px);text-decoration:none}.like-article-btn:active{transform:scale(0.95)}.like-article-btn.liked{background:linear-gradient(45deg,#ff6b6b,#ee5a24);transform:scale(1.05);box-shadow:0 4px 12px rgba(255,107,107,0.4)}.like-icon{font-size:16px;transition:transform 0.3s ease}.like-article-btn:hover .like-icon{transform:scale(1.2)}.like-count{font-size:14px;font-weight:bold;min-width:20px;text-align:center}.like-text{font-size:14px;font-weight:500}.message{position:fixed;top:20px;right:20px;padding:12px 20px;border-radius:5px;color:white;font-weight:bold;z-index:1000;box-shadow:0 4px 12px rgba(0,0,0,0.15);max-width:300px;word-wrap:break-word}.message.success{background-color:#4CAF50;border-left:4px solid #45a049}.message.error{background-color:#f44336;border-left:4px solid #d32f2f}@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideOut{from{transform:translateX(0);opacity:1}to{transform:translateX(100%);opacity:0}}@keyframes likeAnimation{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}.like-article-btn.liked .like-icon{animation:likeAnimation 0.6s ease-in-out}@media (max-width:768px){.article-actions{flex-direction:column;gap:10px;align-items:flex-start}.like-article-btn{padding:10px 20px;font-size:16px;width:100%;justify-content:center}.message{right:10px;left:10px;max-width:none}}@media (prefers-color-scheme:dark){.article-actions{border-top-color:#444}.like-article-btn{background:linear-gradient(45deg,#4a5568,#2d3748)}.like-article-btn:hover{background:linear-gradient(45deg,#5a6c7d,#3d4a5d)}}.like-article-btn:focus{outline:2px solid #007cba;outline-offset:2px}.like-article-btn:focus:not(:focus-visible){outline:none}.like-article-btn.loading{opacity:0.6;cursor:not-allowed;pointer-events:none}.like-article-btn.loading .like-icon{animation:spin 1s linear infinite}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.comment-actions .like-btn{background:linear-gradient(45deg,#ff6b6b,#ee5a24);border:none;color:white;border-radius:20px;padding:5px 12px;font-size:12px}.comment-actions .like-btn:hover{background:linear-gradient(45deg,#ff5252,#d32f2f);transform:translateY(-1px);box-shadow:0 2px 8px rgba(255,107,107,0.3)}