×

注意!页面内容来自https://www.zhihu.com/question/48776632,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

< data-emotion-css="dg64xe">.css-dg64xe .FileLinkCard{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:rgba(248,248,250,0.88);border-radius:12px;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1em auto;max-width:100%;overflow:hidden;padding:12px;position:relative;width:390px;}.css-dg64xe .FileLinkCard-icon{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:30px;width:30px;}.css-dg64xe .FileLinkCard-info{margin-left:12px;}.css-dg64xe .FileLinkCard-name{color:#191B1F;font-size:15px;font-weight:500;line-height:21px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;}.css-dg64xe .FileLinkCard-meta{color:#9196a1;font-size:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;line-height:14px;margin-top:5px;}.css-dg64xe .FileLinkCard-source{white-space:pre;}.css-dg64xe img[data-uncomfortable]{content:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20344.88888888888886%20194%22%3E%3CforeignObject%20width%3D%22344.88888888888886%22%20height%3D%22194%22%3E%0A%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20%3D%22font-size%3A%2013px%3B%20font-family%3A%20-apple-system%2C%20BlinkMacSystemFont%2C%20Microsoft%20YaHei%2C%20sans-serif%3B%20color%3A%20%23fff%3B%20width%3A100%25%3B%20height%3A194px%3B%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20%3D%22display%3A%20flex%3B%20flex-direction%3A%20column%3B%20align-items%3A%20center%3B%20justify-content%3A%20center%3B%20height%3A%20100%25%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2218%22%20height%3D%2218%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%3Cpath%20d%3D%22M8%203.65a7%207%200%2000-1.353.128.65.65%200%2011-.25-1.275A8.3%208.3%200%20018%202.35c2.387%200%204.172.954%205.357%202.125C14.511%205.615%2015.15%207.022%2015.15%208c0%20.621-.257%201.391-.699%202.134a7.076%207.076%200%2001-1.403%201.68l.495.46a.65.65%200%2011-.886.951l-.998-.929a.645.645%200%2001-.104-.097L9.73%2010.501a.647.647%200%2001-.29.301%203.15%203.15%200%2001-4.313-4.094.647.647%200%2001.234-.275L3.908%205.08a5.774%205.774%200%2000-1.283%201.522C2.282%207.198%202.15%207.707%202.15%208c0%20.522.41%201.616%201.407%202.6.965.954%202.43%201.75%204.443%201.75.468%200%20.905-.043%201.311-.12a.65.65%200%2001.243%201.277A8.322%208.322%200%20018%2013.65c-2.387%200-4.172-.954-5.357-2.125C1.49%2010.385.85%208.978.85%208c0-.598.238-1.333.648-2.046A7.054%207.054%200%20012.95%204.188l-.547-.509a.65.65%200%2011.886-.951l8.8%208.194a5.793%205.793%200%20001.244-1.453c.372-.624.516-1.163.516-1.469%200-.522-.41-1.616-1.407-2.6-.965-.954-2.43-1.75-4.443-1.75zM6.29%207.296a1.85%201.85%200%20002.534%202.36l-2.535-2.36zM8%204.85a.65.65%200%20100%201.3%201.85%201.85%200%20011.843%201.694.65.65%200%20101.296-.11A3.15%203.15%200%20008%204.85z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20%3D%22margin%3A%20.6em%200%201.2em%22%3E%E8%AF%A5%E5%9B%BE%E7%89%87%E6%9C%89%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%BC%95%E8%B5%B7%E4%B8%8D%E9%80%82%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cbutton%20%3D%22padding%3A%204px%201em%3B%20font-size%3A%201.1em%3B%20color%3A%20inherit%3B%20background%3A%20none%3B%20border%3A%201px%20solid%20rgba%28255%2C255%2C255%2C.5%29%3B%20border-radius%3A%209999px%3B%22%3E%E7%BB%A7%E7%BB%AD%E6%9F%A5%E7%9C%8B%3C%2Fbutton%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2FforeignObject%3E%3C%2Fsvg%3E);width:100%;height:194px;background:url(https://pic1.zhimg.com/v2-cf70d0759d787c70091857151c1cad4a.jpeg) no-repeat rgba(191,191,191,0.7);background-size:cover;cursor:pointer!important;}.css-dg64xe img.content_image[data-size="normal"],.css-dg64xe img.origin_image[data-size="normal"]{width:100%;max-width:100%;}.css-dg64xe img.content_image[data-size="small"],.css-dg64xe img.origin_image[data-size="small"]{width:320px;max-width:100%;}< data-emotion-css="1m263bh">.css-1m263bh .LinkCard.new{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:390px;min-height:90px;border-radius:8px;max-width:100%;overflow:hidden;margin:16px auto;padding:12px;background-color:#f8f8fa;}.css-1m263bh .LinkCard.new,.css-1m263bh .LinkCard.new:hover{-webkit-text-decoration:none;text-decoration:none;border:none !important;color:inherit !important;}.css-1m263bh .LinkCard.new.LinkCard--customStyle{display:block;padding:0;background:linear-gradient(180deg,#ffffff 0%,rgba(248,248,250,0.4) 100%);}.css-1m263bh .LinkCard.new.LinkCard--customStyle .LinkCard-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:90px;padding:12px;}.css-1m263bh .LinkCard.new.LinkCard--customStyle .LinkCard-image{width:66px;height:66px;border-radius:6px;margin-right:12px;margin-left:0;}.css-1m263bh .LinkCard.new .LinkCard-contents{display:block;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;position:relative;}.css-1m263bh .LinkCard.new .LinkCard-contents .loading{height:14px;background:#ebeced;border-radius:7px;}.css-1m263bh .LinkCard.new .LinkCard-contents.withTitle{margin-bottom:3px;}.css-1m263bh .LinkCard.new .LinkCard-title{display:-webkit-box;font-size:15px;font-weight:500;line-height:1.4;margin-bottom:4px;color:#191B1F;max-width:365px;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1m263bh .LinkCard.new .LinkCard-title.two-line{line-height:20px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;}.css-1m263bh .LinkCard.new .LinkCard-title.loading{margin-bottom:8px;width:80%;}.css-1m263bh .LinkCard.new .LinkCard-title.loading.withTitle{margin-bottom:6px;}.css-1m263bh .LinkCard.new .LinkCard-title.loadingTitle{margin-bottom:5px;}.css-1m263bh .LinkCard.new .LinkCard-excerpt{display:-webkit-box;text-overflow:ellipsis;font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;margin-bottom:4px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1m263bh .LinkCard.new .LinkCard-excerpt .LinkCard-author{color:#373a40;}.css-1m263bh .LinkCard.new .LinkCard-desc{display:block;font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;}.css-1m263bh .LinkCard.new .LinkCard-desc .LinkCard-tag,.css-1m263bh .LinkCard.new .LinkCard-desc .tag{display:inline-block;font-size:11px;margin-left:6px;padding:0 4px;border-radius:3px;line-height:16px;background:#ebeced;}.css-1m263bh .LinkCard.new .LinkCard-desc.loading{width:40%;}.css-1m263bh .LinkCard.new .LinkCard-desc svg{margin-right:2px;}.css-1m263bh .LinkCard.new .LinkCard-desc-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:365px;}.css-1m263bh .LinkCard.new .LinkCard-desc-wrapper-line-clamp{display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1m263bh .LinkCard.new .LinkCard-image{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;background-color:#ebeced;background-size:cover;background-position:center;position:relative;display:block;width:66px;height:66px;margin-right:12px;margin-left:0;object-fit:cover;border-radius:6px;overflow:hidden;}.css-1m263bh .LinkCard.new .LinkCard-image::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:0.16;pointer-events:none;z-index:0;background:rgba(0,0,0,0.16);}.css-1m263bh .LinkCard.new .LinkCard-image.LinkCard-image--default{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background-color:#ebeced;color:#c4c7ce;}.css-1m263bh .LinkCard.new .LinkCard-image.LinkCard-image--default svg{color:#9196a1;}.css-1m263bh .LinkCard.new .LinkCard-image img{width:100%;height:100%;object-fit:cover;}.css-1m263bh .LinkCard.new .LinkCard-image .LinkCard-image--video{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:28px;height:28px;border-radius:14px;pointer-events:none;z-index:1;background:transparent;}.css-1m263bh .LinkCard.new .LinkCard-image .LinkCard-image--video svg{color:#ffffff;position:relative;left:2px;}.css-1m263bh .LinkCard.new .LinkCard-richText .text{color:#373a40;}.css-1m263bh .LinkCard.new .LinkCard-richText .bold{font-weight:600;}.css-1m263bh .LinkCard.new .LinkCard-richText .tag{margin-left:8px;}.css-1m263bh .LinkCard.new .LinkCard-richText object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard-desc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard-duration{font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:15px;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard-collect{height:18px;width:20px;-webkit-flex:0 0 20px;-ms-flex:0 0 20px;flex:0 0 20px;margin-left:auto;color:#81858f;position:relative;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard-collect-icon{position:absolute;bottom:0;right:0;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard-play{height:34px;width:34px;-webkit-flex:0 0 34px;-ms-flex:0 0 34px;flex:0 0 34px;margin-left:12px;color:#1772F6;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:100%;background:rgba(23,114,246,0.08);-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard-play-icon{margin-left:2px;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents .LinkCard-contents-main{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}.css-1m263bh .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents .LinkCard-contents-main .LinkCard-title{margin-bottom:6px;}.css-1m263bh .LinkCard.new .ZhidaLinkCard{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:390px;border-radius:8px;overflow:hidden;border:1px solid #ebeced;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-content{display:block;padding:12px 12px 10px;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:8px;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-avatar-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-avatar{width:16px;height:16px;border-radius:100%;object-fit:cover;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-source{margin-left:6px;font-size:12px;line-height:16px;color:#9196a1;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-answer{display:-webkit-box;font-size:13px;line-height:19px;color:#535861;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background-color:#f8f8fa;cursor:pointer;line-height:19px;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-logo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;fill:#5a4df8;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-footer-text{display:block;font-size:13px;font-weight:500;line-height:19px;color:#191B1F;margin-left:6px;}.css-1m263bh .LinkCard.new .ZhidaLinkCard-arrow{color:#5a4df8;margin-left:auto;}.css-1m263bh .LinkCard.new .PinLinkCard .PinLinkCard-content{font-weight:400;}.css-1m263bh .LinkCard.new .PinLinkCard .PinLinkCard-link{display:inline;color:#09408e;-webkit-text-decoration:none;text-decoration:none;}.css-1m263bh .LinkCard.new .PinLinkCard .PinLinkCard-link:hover{border-bottom:1px solid #09408e;}.css-1m263bh .LinkCard.new .PinLinkCard .PinLinkCard-link-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:2px;}.css-1m263bh .LinkCard.new.LinkCard--fileLinkCard .LinkCard-image{background-color:#ffffff;}.css-1m263bh .LinkCard.old{position:relative;display:block;margin:1em auto;width:390px;box-sizing:border-box;border-radius:12px;max-width:100%;overflow:hidden;}.css-1m263bh .LinkCard.old,.css-1m263bh .LinkCard.old:hover{-webkit-text-decoration:none;text-decoration:none;border:none !important;color:inherit !important;}.css-1m263bh .LinkCard-ecommerceLoadingCard{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:12px;border-radius:inherit;height:80px;box-sizing:border-box;background:rgba(248,248,250,0.88);color:#c4c7ce;}.css-1m263bh .LinkCard-ecommerceLoadingCardAvatarWrapper{width:60px;height:60px;background:#ebeced;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;margin-right:10px;}.css-1m263bh .LinkCard-ecommerceLoadingCardNetwork{width:20px;height:20px;}.css-1m263bh .LinkCard-ecommerceLoadingCardLoadingbar{height:60px;-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1m263bh .LinkCard-ecommerceLoadingCardLoadingbar span{height:16px;display:inline-block;background:#ebeced;}.css-1m263bh .LinkCard-ecommerceLoadingCardLoadingbar span:nth-of-type(1){width:60px;margin-bottom:4px;}.css-1m263bh .LinkCard-ecommerceLoadingCardLoadingbar span:nth-of-type(2){width:127px;}< data-emotion-css="1fuuqdp">.css-1fuuqdp .LinkCard.old{position:relative;display:block;margin:1em auto;width:390px;box-sizing:border-box;border-radius:12px;max-width:100%;overflow:hidden;}.css-1fuuqdp .LinkCard.old,.css-1fuuqdp .LinkCard.old:hover{-webkit-text-decoration:none;text-decoration:none;border:none !important;color:inherit !important;}.css-1fuuqdp .LinkCard-ecommerceLoadingCard{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:12px;border-radius:inherit;height:80px;box-sizing:border-box;background:rgba(248,248,250,0.88);color:#c4c7ce;}.css-1fuuqdp .LinkCard-ecommerceLoadingCardAvatarWrapper{width:60px;height:60px;background:#ebeced;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;margin-right:10px;}.css-1fuuqdp .LinkCard-ecommerceLoadingCardNetwork{width:20px;height:20px;}.css-1fuuqdp .LinkCard-ecommerceLoadingCardLoadingbar{height:60px;-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1fuuqdp .LinkCard-ecommerceLoadingCardLoadingbar span{height:16px;display:inline-block;background:#ebeced;}.css-1fuuqdp .LinkCard-ecommerceLoadingCardLoadingbar span:nth-of-type(1){width:60px;margin-bottom:4px;}.css-1fuuqdp .LinkCard-ecommerceLoadingCardLoadingbar span:nth-of-type(2){width:127px;}.css-1fuuqdp .LinkCard.new{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:390px;min-height:90px;border-radius:8px;max-width:100%;overflow:hidden;margin:16px auto;padding:12px;background-color:#f8f8fa;}.css-1fuuqdp .LinkCard.new,.css-1fuuqdp .LinkCard.new:hover{-webkit-text-decoration:none;text-decoration:none;border:none !important;color:inherit !important;}.css-1fuuqdp .LinkCard.new.LinkCard--customStyle{display:block;padding:0;background:linear-gradient(180deg,#ffffff 0%,rgba(248,248,250,0.4) 100%);}.css-1fuuqdp .LinkCard.new.LinkCard--customStyle .LinkCard-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:90px;padding:12px;}.css-1fuuqdp .LinkCard.new.LinkCard--customStyle .LinkCard-image{width:66px;height:66px;border-radius:6px;margin-right:12px;margin-left:0;}.css-1fuuqdp .LinkCard.new .LinkCard-contents{display:block;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;position:relative;}.css-1fuuqdp .LinkCard.new .LinkCard-contents .loading{height:14px;background:#ebeced;border-radius:7px;}.css-1fuuqdp .LinkCard.new .LinkCard-contents.withTitle{margin-bottom:3px;}.css-1fuuqdp .LinkCard.new .LinkCard-title{display:-webkit-box;font-size:15px;font-weight:500;line-height:1.4;margin-bottom:4px;color:#191B1F;max-width:365px;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1fuuqdp .LinkCard.new .LinkCard-title.two-line{line-height:20px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;}.css-1fuuqdp .LinkCard.new .LinkCard-title.loading{margin-bottom:8px;width:80%;}.css-1fuuqdp .LinkCard.new .LinkCard-title.loading.withTitle{margin-bottom:6px;}.css-1fuuqdp .LinkCard.new .LinkCard-title.loadingTitle{margin-bottom:5px;}.css-1fuuqdp .LinkCard.new .LinkCard-excerpt{display:-webkit-box;text-overflow:ellipsis;font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;margin-bottom:4px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1fuuqdp .LinkCard.new .LinkCard-excerpt .LinkCard-author{color:#373a40;}.css-1fuuqdp .LinkCard.new .LinkCard-desc{display:block;font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;}.css-1fuuqdp .LinkCard.new .LinkCard-desc .LinkCard-tag,.css-1fuuqdp .LinkCard.new .LinkCard-desc .tag{display:inline-block;font-size:11px;margin-left:6px;padding:0 4px;border-radius:3px;line-height:16px;background:#ebeced;}.css-1fuuqdp .LinkCard.new .LinkCard-desc.loading{width:40%;}.css-1fuuqdp .LinkCard.new .LinkCard-desc svg{margin-right:2px;}.css-1fuuqdp .LinkCard.new .LinkCard-desc-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:365px;}.css-1fuuqdp .LinkCard.new .LinkCard-desc-wrapper-line-clamp{display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1fuuqdp .LinkCard.new .LinkCard-image{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;background-color:#ebeced;background-size:cover;background-position:center;position:relative;display:block;width:66px;height:66px;margin-right:12px;margin-left:0;object-fit:cover;border-radius:6px;overflow:hidden;}.css-1fuuqdp .LinkCard.new .LinkCard-image::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:0.16;pointer-events:none;z-index:0;background:rgba(0,0,0,0.16);}.css-1fuuqdp .LinkCard.new .LinkCard-image.LinkCard-image--default{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background-color:#ebeced;color:#c4c7ce;}.css-1fuuqdp .LinkCard.new .LinkCard-image.LinkCard-image--default svg{color:#9196a1;}.css-1fuuqdp .LinkCard.new .LinkCard-image img{width:100%;height:100%;object-fit:cover;}.css-1fuuqdp .LinkCard.new .LinkCard-image .LinkCard-image--video{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:28px;height:28px;border-radius:14px;pointer-events:none;z-index:1;background:transparent;}.css-1fuuqdp .LinkCard.new .LinkCard-image .LinkCard-image--video svg{color:#ffffff;position:relative;left:2px;}.css-1fuuqdp .LinkCard.new .LinkCard-richText .text{color:#373a40;}.css-1fuuqdp .LinkCard.new .LinkCard-richText .bold{font-weight:600;}.css-1fuuqdp .LinkCard.new .LinkCard-richText .tag{margin-left:8px;}.css-1fuuqdp .LinkCard.new .LinkCard-richText object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard-desc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard-duration{font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:15px;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard-collect{height:18px;width:20px;-webkit-flex:0 0 20px;-ms-flex:0 0 20px;flex:0 0 20px;margin-left:auto;color:#81858f;position:relative;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard-collect-icon{position:absolute;bottom:0;right:0;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard-play{height:34px;width:34px;-webkit-flex:0 0 34px;-ms-flex:0 0 34px;flex:0 0 34px;margin-left:12px;color:#1772F6;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:100%;background:rgba(23,114,246,0.08);-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard-play-icon{margin-left:2px;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents .LinkCard-contents-main{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}.css-1fuuqdp .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents .LinkCard-contents-main .LinkCard-title{margin-bottom:6px;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:390px;border-radius:8px;overflow:hidden;border:1px solid #ebeced;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-content{display:block;padding:12px 12px 10px;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:8px;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-avatar-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-avatar{width:16px;height:16px;border-radius:100%;object-fit:cover;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-source{margin-left:6px;font-size:12px;line-height:16px;color:#9196a1;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-answer{display:-webkit-box;font-size:13px;line-height:19px;color:#535861;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background-color:#f8f8fa;cursor:pointer;line-height:19px;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-logo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;fill:#5a4df8;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-footer-text{display:block;font-size:13px;font-weight:500;line-height:19px;color:#191B1F;margin-left:6px;}.css-1fuuqdp .LinkCard.new .ZhidaLinkCard-arrow{color:#5a4df8;margin-left:auto;}.css-1fuuqdp .LinkCard.new .PinLinkCard .PinLinkCard-content{font-weight:400;}.css-1fuuqdp .LinkCard.new .PinLinkCard .PinLinkCard-link{display:inline;color:#09408e;-webkit-text-decoration:none;text-decoration:none;}.css-1fuuqdp .LinkCard.new .PinLinkCard .PinLinkCard-link:hover{border-bottom:1px solid #09408e;}.css-1fuuqdp .LinkCard.new .PinLinkCard .PinLinkCard-link-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:2px;}.css-1fuuqdp .LinkCard.new.LinkCard--fileLinkCard .LinkCard-image{background-color:#ffffff;}.css-1fuuqdp .FileLinkCard{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:rgba(248,248,250,0.88);border-radius:12px;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1em auto;max-width:100%;overflow:hidden;padding:12px;position:relative;width:390px;}.css-1fuuqdp .FileLinkCard-icon{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:30px;width:30px;}.css-1fuuqdp .FileLinkCard-info{margin-left:12px;}.css-1fuuqdp .FileLinkCard-name{color:#191B1F;font-size:15px;font-weight:500;line-height:21px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;}.css-1fuuqdp .FileLinkCard-meta{color:#9196a1;font-size:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;line-height:14px;margin-top:5px;}.css-1fuuqdp .FileLinkCard-source{white-space:pre;}.css-1fuuqdp img[data-uncomfortable]{content:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20344.88888888888886%20194%22%3E%3CforeignObject%20width%3D%22344.88888888888886%22%20height%3D%22194%22%3E%0A%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20%3D%22font-size%3A%2013px%3B%20font-family%3A%20-apple-system%2C%20BlinkMacSystemFont%2C%20Microsoft%20YaHei%2C%20sans-serif%3B%20color%3A%20%23fff%3B%20width%3A100%25%3B%20height%3A194px%3B%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20%3D%22display%3A%20flex%3B%20flex-direction%3A%20column%3B%20align-items%3A%20center%3B%20justify-content%3A%20center%3B%20height%3A%20100%25%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2218%22%20height%3D%2218%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%3Cpath%20d%3D%22M8%203.65a7%207%200%2000-1.353.128.65.65%200%2011-.25-1.275A8.3%208.3%200%20018%202.35c2.387%200%204.172.954%205.357%202.125C14.511%205.615%2015.15%207.022%2015.15%208c0%20.621-.257%201.391-.699%202.134a7.076%207.076%200%2001-1.403%201.68l.495.46a.65.65%200%2011-.886.951l-.998-.929a.645.645%200%2001-.104-.097L9.73%2010.501a.647.647%200%2001-.29.301%203.15%203.15%200%2001-4.313-4.094.647.647%200%2001.234-.275L3.908%205.08a5.774%205.774%200%2000-1.283%201.522C2.282%207.198%202.15%207.707%202.15%208c0%20.522.41%201.616%201.407%202.6.965.954%202.43%201.75%204.443%201.75.468%200%20.905-.043%201.311-.12a.65.65%200%2001.243%201.277A8.322%208.322%200%20018%2013.65c-2.387%200-4.172-.954-5.357-2.125C1.49%2010.385.85%208.978.85%208c0-.598.238-1.333.648-2.046A7.054%207.054%200%20012.95%204.188l-.547-.509a.65.65%200%2011.886-.951l8.8%208.194a5.793%205.793%200%20001.244-1.453c.372-.624.516-1.163.516-1.469%200-.522-.41-1.616-1.407-2.6-.965-.954-2.43-1.75-4.443-1.75zM6.29%207.296a1.85%201.85%200%20002.534%202.36l-2.535-2.36zM8%204.85a.65.65%200%20100%201.3%201.85%201.85%200%20011.843%201.694.65.65%200%20101.296-.11A3.15%203.15%200%20008%204.85z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20%3D%22margin%3A%20.6em%200%201.2em%22%3E%E8%AF%A5%E5%9B%BE%E7%89%87%E6%9C%89%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%BC%95%E8%B5%B7%E4%B8%8D%E9%80%82%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cbutton%20%3D%22padding%3A%204px%201em%3B%20font-size%3A%201.1em%3B%20color%3A%20inherit%3B%20background%3A%20none%3B%20border%3A%201px%20solid%20rgba%28255%2C255%2C255%2C.5%29%3B%20border-radius%3A%209999px%3B%22%3E%E7%BB%A7%E7%BB%AD%E6%9F%A5%E7%9C%8B%3C%2Fbutton%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2FforeignObject%3E%3C%2Fsvg%3E);width:100%;height:194px;background:url(https://pic1.zhimg.com/v2-cf70d0759d787c70091857151c1cad4a.jpeg) no-repeat rgba(191,191,191,0.7);background-size:cover;cursor:pointer!important;}.css-1fuuqdp img.content_image[data-size="normal"],.css-1fuuqdp img.origin_image[data-size="normal"]{width:100%;max-width:100%;}.css-1fuuqdp img.content_image[data-size="small"],.css-1fuuqdp img.origin_image[data-size="small"]{width:320px;max-width:100%;}< data-emotion-css="1oz8dhe animation-1yvu044">.css-1oz8dhe{word-break:break-word;line-height:1.6;}.css-1oz8dhe > [data-first-child]{margin-top:0;}.css-1oz8dhe > :last-child{margin-bottom:0;}.css-1oz8dhe h1,.css-1oz8dhe h2{clear:left;margin-top:calc((1.4em * 2) / 1.2);margin-bottom:calc(1.4em / 1.2);font-size:1.2em;line-height:1.5;font-weight:600;}.css-1oz8dhe h3,.css-1oz8dhe h4,.css-1oz8dhe h5,.css-1oz8dhe h6{clear:left;margin-top:calc((1.4em * 1.5) / 1.1);margin-bottom:calc(1.4em / 1.1);font-size:1.1em;line-height:1.5;font-weight:600;}.css-1oz8dhe u{-webkit-text-decoration:none;text-decoration:none;border-bottom:1px solid #373a40;}.css-1oz8dhe b{font-weight:600;}.css-1oz8dhe sup{font-size:0.8em;}.css-1oz8dhe sup[data-draft-type='reference']{color:#09408e;}.css-1oz8dhe a:focus{outline:none;-webkit-transition:box-shadow 0.3s;transition:box-shadow 0.3s;}html[data-focus-visible] .css-1oz8dhe a:focus{box-shadow:0 0 0 2px #ffffff,0 0 0 4px rgba(23,114,246,0.3);}.css-1oz8dhe a.ztext-link,.css-1oz8dhe a.internal,.css-1oz8dhe a.external,.css-1oz8dhe a.videox{-webkit-text-decoration:none;text-decoration:none;cursor:pointer;color:#09408e;}.css-1oz8dhe a.ztext-link:hover,.css-1oz8dhe a.internal:hover,.css-1oz8dhe a.external:hover,.css-1oz8dhe a.videox:hover{color:#09408e;}.css-1oz8dhe a.ztext-link > .ellipsis::after,.css-1oz8dhe a.internal > .ellipsis::after,.css-1oz8dhe a.external > .ellipsis::after,.css-1oz8dhe a.videox > .ellipsis::after{content:'...';}.css-1oz8dhe a.ztext-link > .invisible,.css-1oz8dhe a.internal > .invisible,.css-1oz8dhe a.external > .invisible,.css-1oz8dhe a.videox > .invisible{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;}.css-1oz8dhe a.ztext-link u,.css-1oz8dhe a.internal u,.css-1oz8dhe a.external u,.css-1oz8dhe a.videox u{border:none;}.css-1oz8dhe a.member_mention{color:#09408e;}.css-1oz8dhe a.member_mention:hover{border-bottom:1px solid #09408e;}.css-1oz8dhe a.UserLink-link{color:#09408e;}.css-1oz8dhe a.UserLink-link:hover{border-bottom:1px solid #09408e;}.css-1oz8dhe p{margin:1.4em 0;}.css-1oz8dhe p.ztext-empty-paragraph{margin:calc((2.8em- (1.4em * 2 + 1.6em)) / 2) 0;}.css-1oz8dhe p.ztext-empty-paragraph + .ztext-empty-paragraph{margin:1.4em 0;}.css-1oz8dhe hr{margin:4em auto;width:240px;max-width:100%;border:none;border-top:1px solid #c4c7ce;}.css-1oz8dhe img[eeimg]{max-width:100%;vertical-align:middle;}.css-1oz8dhe img[eeimg="1"]{margin:0 3px;max-width:calc(100% - 6px);display:inline-block;}.css-1oz8dhe img[eeimg="2"]{margin:1.4em auto;display:block;}.css-1oz8dhe .ztext-math[data-eeimg="2"]{margin:0 auto;display:block;text-align:center;}.css-1oz8dhe blockquote{margin:1.4em 0;padding-left:1em;color:#535861;border-left:3px solid #c4c7ce;}.css-1oz8dhe ol,.css-1oz8dhe ul{margin:1.4em 0;padding:0;width:100%;}.css-1oz8dhe ol ol,.css-1oz8dhe ul ol,.css-1oz8dhe ol ul,.css-1oz8dhe ul ul{margin:0;}.css-1oz8dhe ol li::before,.css-1oz8dhe ul li::before{width:1em;}.css-1oz8dhe ol > ol,.css-1oz8dhe ul > ol,.css-1oz8dhe ol > ul,.css-1oz8dhe ul > ul{padding-left:1em;box-sizing:border-box;}.css-1oz8dhe ul>li{display:table;width:100%;list-:none;}.css-1oz8dhe ul>li::before{display:table-cell;content:'• ';white-space:pre;}.css-1oz8dhe ol{counter-reset:ol;}.css-1oz8dhe ol > li{display:table;width:100%;list-:none;}.css-1oz8dhe ol > li::before{display:table-cell;text-align:right;counter-increment:ol;content:counter(ol) '. ';white-space:pre;}.css-1oz8dhe ol ol{counter-reset:ol2;}.css-1oz8dhe ol ol li::before{counter-increment:ol2;content:counter(ol2) '. ';}.css-1oz8dhe ol ol ol{counter-reset:ol3;}.css-1oz8dhe ol ol ol li::before{counter-increment:ol3;content:counter(ol3) '. ';}.css-1oz8dhe ol ol ol ol{counter-reset:ol4;}.css-1oz8dhe ol ol ol ol li::before{counter-increment:ol4;content:counter(ol4) '. ';}.css-1oz8dhe figure{margin:1.4em 0;}.css-1oz8dhe figure .content_image,.css-1oz8dhe figure .origin_image{margin:0 auto;}.css-1oz8dhe figure figcaption{margin-top:calc(0.6em / 0.9);padding:0 1em;font-size:0.9em;line-height:1.5;text-align:center;color:#9196a1;}.css-1oz8dhe figure + figure{margin-top:calc(1.4em * 1.6);}.css-1oz8dhe figure[data-size='small'],.css-1oz8dhe figure:not([data-size]) > [data-size='small']{clear:both;}.css-1oz8dhe figure[data-size='left'],.css-1oz8dhe figure:not([data-size]) > [data-size='left']{float:left;margin:0 20px 20px 0;max-width:33%;}.css-1oz8dhe figure[data-size='right'],.css-1oz8dhe figure:not([data-size]) > [data-size='right']{float:right;margin:0 0 20px 20px;max-width:33%;}.css-1oz8dhe figure[data-size='collapse']{margin-bottom:0;}.css-1oz8dhe figure[data-size='collapse'] + figure{margin-top:0;}.css-1oz8dhe .content_image,.css-1oz8dhe .origin_image{display:block;max-width:100%;height:auto;margin:1.4em auto;background-color:#fff;}.css-1oz8dhe .content_image[data-size='small'],.css-1oz8dhe .origin_image[data-size='small']{max-width:40%;}.css-1oz8dhe .content_image.zh-lightbox-thumb,.css-1oz8dhe .origin_image.zh-lightbox-thumb{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in;}.css-1oz8dhe code{margin:0 2px;padding:3px 4px;border-radius:3px;font-family:Menlo,Monaco,Consolas,'Andale Mono','lucida console','Courier New',monospace;font-size:0.9em;background-color:#f8f8fa;}.css-1oz8dhe pre{margin:1.4em 0;padding:calc(0.8em / 0.9);font-size:0.9em;word-break:initial;word-wrap:initial;white-space:pre;overflow:auto;-webkit-overflow-scrolling:touch;background:#f8f8fa;border-radius:4px;}.css-1oz8dhe pre code{margin:0;padding:0;font-size:inherit;border-radius:0;background-color:inherit;}.css-1oz8dhe li pre{white-space:pre-wrap;}.css-1oz8dhe table[data-draft-type='table']{border-collapse:collapse;font-size:15px;margin:1.4em auto;max-width:100%;table-layout:fixed;text-align:left;width:100%;}.css-1oz8dhe table[data-draft-type='table'][data-size='small']{min-width:260px;width:40%;}.css-1oz8dhe table[data-draft-type='table'][data-row-='striped'] tr:nth-of-type(2n + 1){background:#f8f8fa;}.css-1oz8dhe table[data-draft-type='table'] td,.css-1oz8dhe table[data-draft-type='table'] th{border:1px solid #c4c7ce;line-height:24px;height:24px;padding:3px 12px;}.css-1oz8dhe table[data-draft-type='table'] th{background:#ebeced;color:#191B1F;font-weight:500;}.css-1oz8dhe .video-box,.css-1oz8dhe .link-box{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:1.4em 0;overflow:auto;white-space:normal;cursor:pointer;border:solid 1px #ebeced;border-radius:4px;}.css-1oz8dhe .lazy[data-lazy-status]{background-color:#f8f8fa;}.css-1oz8dhe .lazy[data-lazy-status="ok"]{background-color:#fff;-webkit-animation:animation-1yvu044 0.5s ease-in;animation:animation-1yvu044 0.5s ease-in;}.css-1oz8dhe .highlight{margin:1em 0;}.css-1oz8dhe .highlight pre{margin:0;}.css-1oz8dhe .highlight .hll{background-color:#f8f8fa;}.css-1oz8dhe .highlight .c{font-:italic;color:#9196a1;}.css-1oz8dhe .highlight .err{color:#D95350;}.css-1oz8dhe .highlight .k{font-weight:600;}.css-1oz8dhe .highlight .o{font-weight:600;}.css-1oz8dhe .highlight .cm{font-:italic;color:#9196a1;}.css-1oz8dhe .highlight .cp{font-weight:600;color:#9196a1;}.css-1oz8dhe .highlight .c1{font-:italic;color:#9196a1;}.css-1oz8dhe .highlight .cs{font-:italic;font-weight:600;color:#9196a1;}.css-1oz8dhe .highlight .gd{color:#F05159;}.css-1oz8dhe .highlight .ge{font-:italic;}.css-1oz8dhe .highlight .gr{color:#D95350;}.css-1oz8dhe .highlight .gh{color:#9196a1;}.css-1oz8dhe .highlight .gi{color:#12b370;}.css-1oz8dhe .highlight .go{color:#81858f;}.css-1oz8dhe .highlight .gp{color:#535861;}.css-1oz8dhe .highlight .gs{font-weight:600;}.css-1oz8dhe .highlight .gu{color:#9196a1;}.css-1oz8dhe .highlight .gt{color:#D95350;}.css-1oz8dhe .highlight .kc{font-weight:600;}.css-1oz8dhe .highlight .kd{font-weight:600;}.css-1oz8dhe .highlight .kn{font-weight:600;}.css-1oz8dhe .highlight .kp{font-weight:600;}.css-1oz8dhe .highlight .kr{font-weight:600;}.css-1oz8dhe .highlight .kt{font-weight:600;color:#09408e;}.css-1oz8dhe .highlight .m{color:#1772F6;}.css-1oz8dhe .highlight .s{color:#D95350;}.css-1oz8dhe .highlight .na{color:#1772F6;}.css-1oz8dhe .highlight .nb{color:#1772F6;}.css-1oz8dhe .highlight .nc{font-weight:600;color:#09408e;}.css-1oz8dhe .highlight .no{color:#1772F6;}.css-1oz8dhe .highlight .ni{color:#6A5FF3;}.css-1oz8dhe .highlight .ne{font-weight:600;color:#D95350;}.css-1oz8dhe .highlight .nf{font-weight:600;color:#D95350;}.css-1oz8dhe .highlight .nn{color:#535861;}.css-1oz8dhe .highlight .nt{color:#09408e;}.css-1oz8dhe .highlight .nv{color:#1772F6;}.css-1oz8dhe .highlight .ow{font-weight:600;}.css-1oz8dhe .highlight .w{color:#adb0b7;}.css-1oz8dhe .highlight .mf{color:#1772F6;}.css-1oz8dhe .highlight .mh{color:#1772F6;}.css-1oz8dhe .highlight .mi{color:#1772F6;}.css-1oz8dhe .highlight .mo{color:#1772F6;}.css-1oz8dhe .highlight .sb{color:#D95350;}.css-1oz8dhe .highlight .sc{color:#D95350;}.css-1oz8dhe .highlight .sd{color:#D95350;}.css-1oz8dhe .highlight .s2{color:#D95350;}.css-1oz8dhe .highlight .se{color:#D95350;}.css-1oz8dhe .highlight .sh{color:#D95350;}.css-1oz8dhe .highlight .si{color:#D95350;}.css-1oz8dhe .highlight .sx{color:#D95350;}.css-1oz8dhe .highlight .sr{color:#A5542F;}.css-1oz8dhe .highlight .s1{color:#D95350;}.css-1oz8dhe .highlight .ss{color:#D95350;}.css-1oz8dhe .highlight .bp{color:#9196a1;}.css-1oz8dhe .highlight .vc{color:#1772F6;}.css-1oz8dhe .highlight .vg{color:#1772F6;}.css-1oz8dhe .highlight .vi{color:#1772F6;}.css-1oz8dhe .highlight .il{color:#1772F6;}.css-1oz8dhe .highlight::-webkit-scrollbar{width:6px;height:6px;}.css-1oz8dhe .highlight::-webkit-scrollbar-thumb:horizontal{background-color:rgba(25,27,31,0.5);border-radius:6px;}.css-1oz8dhe .highlight::-webkit-scrollbar-thumb:horizontal:hover{background-color:rgba(25,27,31,0.6);}.css-1oz8dhe .LinkCard.old{position:relative;display:block;margin:1em auto;width:390px;box-sizing:border-box;border-radius:12px;max-width:100%;overflow:hidden;}.css-1oz8dhe .LinkCard.old,.css-1oz8dhe .LinkCard.old:hover{-webkit-text-decoration:none;text-decoration:none;border:none !important;color:inherit !important;}.css-1oz8dhe .LinkCard-ecommerceLoadingCard{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:12px;border-radius:inherit;height:80px;box-sizing:border-box;background:rgba(248,248,250,0.88);color:#c4c7ce;}.css-1oz8dhe .LinkCard-ecommerceLoadingCardAvatarWrapper{width:60px;height:60px;background:#ebeced;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;margin-right:10px;}.css-1oz8dhe .LinkCard-ecommerceLoadingCardNetwork{width:20px;height:20px;}.css-1oz8dhe .LinkCard-ecommerceLoadingCardLoadingbar{height:60px;-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}.css-1oz8dhe .LinkCard-ecommerceLoadingCardLoadingbar span{height:16px;display:inline-block;background:#ebeced;}.css-1oz8dhe .LinkCard-ecommerceLoadingCardLoadingbar span:nth-of-type(1){width:60px;margin-bottom:4px;}.css-1oz8dhe .LinkCard-ecommerceLoadingCardLoadingbar span:nth-of-type(2){width:127px;}.css-1oz8dhe .LinkCard.new{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:390px;min-height:90px;border-radius:8px;max-width:100%;overflow:hidden;margin:16px auto;padding:12px;background-color:#f8f8fa;}.css-1oz8dhe .LinkCard.new,.css-1oz8dhe .LinkCard.new:hover{-webkit-text-decoration:none;text-decoration:none;border:none !important;color:inherit !important;}.css-1oz8dhe .LinkCard.new.LinkCard--customStyle{display:block;padding:0;background:linear-gradient(180deg,#ffffff 0%,rgba(248,248,250,0.4) 100%);}.css-1oz8dhe .LinkCard.new.LinkCard--customStyle .LinkCard-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-sizing:border-box;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:90px;padding:12px;}.css-1oz8dhe .LinkCard.new.LinkCard--customStyle .LinkCard-image{width:66px;height:66px;border-radius:6px;margin-right:12px;margin-left:0;}.css-1oz8dhe .LinkCard.new .LinkCard-contents{display:block;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;position:relative;}.css-1oz8dhe .LinkCard.new .LinkCard-contents .loading{height:14px;background:#ebeced;border-radius:7px;}.css-1oz8dhe .LinkCard.new .LinkCard-contents.withTitle{margin-bottom:3px;}.css-1oz8dhe .LinkCard.new .LinkCard-title{display:-webkit-box;font-size:15px;font-weight:500;line-height:1.4;margin-bottom:4px;color:#191B1F;max-width:365px;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1oz8dhe .LinkCard.new .LinkCard-title.two-line{line-height:20px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;}.css-1oz8dhe .LinkCard.new .LinkCard-title.loading{margin-bottom:8px;width:80%;}.css-1oz8dhe .LinkCard.new .LinkCard-title.loading.withTitle{margin-bottom:6px;}.css-1oz8dhe .LinkCard.new .LinkCard-title.loadingTitle{margin-bottom:5px;}.css-1oz8dhe .LinkCard.new .LinkCard-excerpt{display:-webkit-box;text-overflow:ellipsis;font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;margin-bottom:4px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1oz8dhe .LinkCard.new .LinkCard-excerpt .LinkCard-author{color:#373a40;}.css-1oz8dhe .LinkCard.new .LinkCard-desc{display:block;font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;}.css-1oz8dhe .LinkCard.new .LinkCard-desc .LinkCard-tag,.css-1oz8dhe .LinkCard.new .LinkCard-desc .tag{display:inline-block;font-size:11px;margin-left:6px;padding:0 4px;border-radius:3px;line-height:16px;background:#ebeced;}.css-1oz8dhe .LinkCard.new .LinkCard-desc.loading{width:40%;}.css-1oz8dhe .LinkCard.new .LinkCard-desc svg{margin-right:2px;}.css-1oz8dhe .LinkCard.new .LinkCard-desc-wrapper{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:365px;}.css-1oz8dhe .LinkCard.new .LinkCard-desc-wrapper-line-clamp{display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1oz8dhe .LinkCard.new .LinkCard-image{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;background-color:#ebeced;background-size:cover;background-position:center;position:relative;display:block;width:66px;height:66px;margin-right:12px;margin-left:0;object-fit:cover;border-radius:6px;overflow:hidden;}.css-1oz8dhe .LinkCard.new .LinkCard-image::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:0.16;pointer-events:none;z-index:0;background:rgba(0,0,0,0.16);}.css-1oz8dhe .LinkCard.new .LinkCard-image.LinkCard-image--default{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;background-color:#ebeced;color:#c4c7ce;}.css-1oz8dhe .LinkCard.new .LinkCard-image.LinkCard-image--default svg{color:#9196a1;}.css-1oz8dhe .LinkCard.new .LinkCard-image img{width:100%;height:100%;object-fit:cover;}.css-1oz8dhe .LinkCard.new .LinkCard-image .LinkCard-image--video{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:28px;height:28px;border-radius:14px;pointer-events:none;z-index:1;background:transparent;}.css-1oz8dhe .LinkCard.new .LinkCard-image .LinkCard-image--video svg{color:#ffffff;position:relative;left:2px;}.css-1oz8dhe .LinkCard.new .LinkCard-richText .text{color:#373a40;}.css-1oz8dhe .LinkCard.new .LinkCard-richText .bold{font-weight:600;}.css-1oz8dhe .LinkCard.new .LinkCard-richText .tag{margin-left:8px;}.css-1oz8dhe .LinkCard.new .LinkCard-richText object{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard-desc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard-duration{font-size:13px;height:18px;line-height:18px;color:#9196a1;word-break:break-all;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:15px;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard-collect{height:18px;width:20px;-webkit-flex:0 0 20px;-ms-flex:0 0 20px;flex:0 0 20px;margin-left:auto;color:#81858f;position:relative;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard-collect-icon{position:absolute;bottom:0;right:0;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard-play{height:34px;width:34px;-webkit-flex:0 0 34px;-ms-flex:0 0 34px;flex:0 0 34px;margin-left:12px;color:#1772F6;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-radius:100%;background:rgba(23,114,246,0.08);-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard-play-icon{margin-left:2px;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents .LinkCard-contents-main{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;}.css-1oz8dhe .LinkCard.new .PodcastEpisodeLinkCard .LinkCard-contents .LinkCard-contents-main .LinkCard-title{margin-bottom:6px;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:390px;border-radius:8px;overflow:hidden;border:1px solid #ebeced;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-content{display:block;padding:12px 12px 10px;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:8px;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-avatar-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-avatar{width:16px;height:16px;border-radius:100%;object-fit:cover;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-source{margin-left:6px;font-size:12px;line-height:16px;color:#9196a1;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-answer{display:-webkit-box;font-size:13px;line-height:19px;color:#535861;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 12px;background-color:#f8f8fa;cursor:pointer;line-height:19px;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-logo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;fill:#5a4df8;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-footer-text{display:block;font-size:13px;font-weight:500;line-height:19px;color:#191B1F;margin-left:6px;}.css-1oz8dhe .LinkCard.new .ZhidaLinkCard-arrow{color:#5a4df8;margin-left:auto;}.css-1oz8dhe .LinkCard.new .PinLinkCard .PinLinkCard-content{font-weight:400;}.css-1oz8dhe .LinkCard.new .PinLinkCard .PinLinkCard-link{display:inline;color:#09408e;-webkit-text-decoration:none;text-decoration:none;}.css-1oz8dhe .LinkCard.new .PinLinkCard .PinLinkCard-link:hover{border-bottom:1px solid #09408e;}.css-1oz8dhe .LinkCard.new .PinLinkCard .PinLinkCard-link-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:2px;}.css-1oz8dhe .LinkCard.new.LinkCard--fileLinkCard .LinkCard-image{background-color:#ffffff;}.css-1oz8dhe .FileLinkCard{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:rgba(248,248,250,0.88);border-radius:12px;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1em auto;max-width:100%;overflow:hidden;padding:12px;position:relative;width:390px;}.css-1oz8dhe .FileLinkCard-icon{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:30px;width:30px;}.css-1oz8dhe .FileLinkCard-info{margin-left:12px;}.css-1oz8dhe .FileLinkCard-name{color:#191B1F;font-size:15px;font-weight:500;line-height:21px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;}.css-1oz8dhe .FileLinkCard-meta{color:#9196a1;font-size:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;line-height:14px;margin-top:5px;}.css-1oz8dhe .FileLinkCard-source{white-space:pre;}.css-1oz8dhe img[data-uncomfortable]{content:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20344.88888888888886%20194%22%3E%3CforeignObject%20width%3D%22344.88888888888886%22%20height%3D%22194%22%3E%0A%20%20%20%20%20%20%3Cdiv%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20%3D%22font-size%3A%2013px%3B%20font-family%3A%20-apple-system%2C%20BlinkMacSystemFont%2C%20Microsoft%20YaHei%2C%20sans-serif%3B%20color%3A%20%23fff%3B%20width%3A100%25%3B%20height%3A194px%3B%22%3E%0A%20%20%20%20%20%20%20%20%3Cdiv%20%3D%22display%3A%20flex%3B%20flex-direction%3A%20column%3B%20align-items%3A%20center%3B%20justify-content%3A%20center%3B%20height%3A%20100%25%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2218%22%20height%3D%2218%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%3Cpath%20d%3D%22M8%203.65a7%207%200%2000-1.353.128.65.65%200%2011-.25-1.275A8.3%208.3%200%20018%202.35c2.387%200%204.172.954%205.357%202.125C14.511%205.615%2015.15%207.022%2015.15%208c0%20.621-.257%201.391-.699%202.134a7.076%207.076%200%2001-1.403%201.68l.495.46a.65.65%200%2011-.886.951l-.998-.929a.645.645%200%2001-.104-.097L9.73%2010.501a.647.647%200%2001-.29.301%203.15%203.15%200%2001-4.313-4.094.647.647%200%2001.234-.275L3.908%205.08a5.774%205.774%200%2000-1.283%201.522C2.282%207.198%202.15%207.707%202.15%208c0%20.522.41%201.616%201.407%202.6.965.954%202.43%201.75%204.443%201.75.468%200%20.905-.043%201.311-.12a.65.65%200%2001.243%201.277A8.322%208.322%200%20018%2013.65c-2.387%200-4.172-.954-5.357-2.125C1.49%2010.385.85%208.978.85%208c0-.598.238-1.333.648-2.046A7.054%207.054%200%20012.95%204.188l-.547-.509a.65.65%200%2011.886-.951l8.8%208.194a5.793%205.793%200%20001.244-1.453c.372-.624.516-1.163.516-1.469%200-.522-.41-1.616-1.407-2.6-.965-.954-2.43-1.75-4.443-1.75zM6.29%207.296a1.85%201.85%200%20002.534%202.36l-2.535-2.36zM8%204.85a.65.65%200%20100%201.3%201.85%201.85%200%20011.843%201.694.65.65%200%20101.296-.11A3.15%203.15%200%20008%204.85z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cdiv%20%3D%22margin%3A%20.6em%200%201.2em%22%3E%E8%AF%A5%E5%9B%BE%E7%89%87%E6%9C%89%E5%8F%AF%E8%83%BD%E4%BC%9A%E5%BC%95%E8%B5%B7%E4%B8%8D%E9%80%82%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cbutton%20%3D%22padding%3A%204px%201em%3B%20font-size%3A%201.1em%3B%20color%3A%20inherit%3B%20background%3A%20none%3B%20border%3A%201px%20solid%20rgba%28255%2C255%2C255%2C.5%29%3B%20border-radius%3A%209999px%3B%22%3E%E7%BB%A7%E7%BB%AD%E6%9F%A5%E7%9C%8B%3C%2Fbutton%3E%0A%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3C%2FforeignObject%3E%3C%2Fsvg%3E);width:100%;height:194px;background:url(https://pic1.zhimg.com/v2-cf70d0759d787c70091857151c1cad4a.jpeg) no-repeat rgba(191,191,191,0.7);background-size:cover;cursor:pointer!important;}.css-1oz8dhe img.content_image[data-size="normal"],.css-1oz8dhe img.origin_image[data-size="normal"]{width:100%;max-width:100%;}.css-1oz8dhe img.content_image[data-size="small"],.css-1oz8dhe img.origin_image[data-size="small"]{width:320px;max-width:100%;}@-webkit-keyframes animation-1yvu044{from{opacity:0;}to{opacity:1;}}@keyframes animation-1yvu044{from{opacity:0;}to{opacity:1;}}

早先看一堆人说 PyQt 打包麻烦,部署困难的,打出来的包大(几十兆起步),而且启动贼慢,其实 Python+PyQt 打包非常容易,根本不需要用什么 PyInstaller,我手工打包出来的纯 Python 环境只有 5MB,加上 PyQt 也才 14MB。

很多人用 PyInstaller 喜欢加一个 -F 参数,打包成一个单文件:

这样的单文件看起来似乎很爽,其实他们不知道,这其实是一个自解压程序,每次运行时需要把自己解压到 temp 目录,然后再去用实际的方式运行一遍解压出来的东西:

Process Explorer 把雷达图标拖动到 pyqt_hello.exe 的窗口上,可以看到有两个 pyqt_hello.exe 的文件,外面那个是你打包出来的,里面那个才是真正的程序(虽然可执行都是一个),看看它下面依赖的 python310.dll 是在哪里?这不就是一个临时解压出来的目录么:

看到没?这就是你 PyInstaller 打包出来的 30MB 的程序,每次运行都要临时解压出 71MB 的文件,运行完又删除了,那么如果打包出来的可执行有 100MB,每次运行都要释放出 200-300 MB 的东西出来,所以为什么 PyInstaller 出来的单文件运行那么慢的原因除了每次要解压外,还有杀毒软件碰到新的二进制都要扫描一遍,你每次新增一堆 .dll .pyd.exe,每次都要扫描,不慢可能么?

其实 PyInstaller 如果不打包成单文件可执行(-F 参数),用起来问题不大,唯一不足有两个,首先是很多动态库其实我没用比如上面的 socketsslQtQuick 等,但都被打包的时候打进去了,大小会偏大;其次是目录看起来很乱,上百个文件一个目录,找主程序都找不到。

正确的打包姿势

当然是手工打包,现在 Python 3.5 以后,官方都会发布一个嵌入式 Python 包:

链接在这里:Python Release Python 3.8.10

现在不是都到 Python 3.10 了么,为什么选择 3.8 ? 因为 3.8 是最后一个支持 Win7 的版本,3.9 以后就不支持了。那么为什么选择 32 位?因为打包出来 32 位是最紧凑的,64 位会大很多,除非你要一次性在内存里 load 2GB 以上的数据,否则基本就选择 32 位的。

这个 32 位的包很小:

本身也只有 7MB,解压出来是一些必要的文件:

那么你在项目路径里建立一个新的 runtime 文件夹,把这些文件放进去,外层写个批处理,调用一下里面的 python.exe 基本就可以跑个命令行的程序了。当然这样看起来很原始,所以精细一点的话,为这个 embedded python 做一个壳,直接加载里面 python3.dll 或者 python38.dll 来运行程序。

嵌入式 Python 加壳

上面说的加壳我写了个例子了,叫做 PyStand:

github.com/skywind3000/

Release 下载下来是这样:

选择第一个 PyStand-py38-pyqt5-lite 这个包,下载下来 14MB,解压后:

目录非常清爽,比 PyInstaller 非单文件那种上百个 dll 的目录干净多了,就几个文件:

  • runtime:之前官方包 embedded python 解压后的内容。
  • site-packages:第三方依赖
  • PyStand.exe:主程序入口。
  • PyStand.int:脚本入口。

这个 PyStand.exe 就是可以直接运行的程序,双击:

运行成功,打包文件只有 14MB,就能跑一个完整 PyQt5 的项目了,比 PyInstaller 的 30MB 小不少,你就是解压开也才 40MB,比 70MB 的 PyInstaller 解压后大小精简很多。

主要代码就是写在 PyStand.int 里,这个 PyStand.exe 启动后会自动加载同名的 .int 文件:

import sys, os
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
app = QApplication([])
win = QWidget()
win.setWindowTitle('PyStand')
layout = QVBoxLayout()
label = QLabel('HelloWorld !!')
label.setAlignment(Qt.AlignCenter)
layout.addWidget(label)
btn = QPushButton(text = 'PUSH ME')
layout.addWidget(btn)
win.setLayout(layout)
win.resize(400, 300)
btn.clicked.connect(lambda : [
        print('exit'),
        sys.exit(0),
    ])
win.show()
app.exec_()

也就是说可执行叫做 PyStand.exe ,它会加载 PyStand.int;如果改名叫做 MyDemo.exe 它就会加载 MyDemo.int 里的代码。

那么其实大家可以直接使用了,把程序名字改成你想要的编写对应的 .int 即可,换图标的话,可以自己重新编译 PyStand 项目,或者直接 Resource Hacker 更换图标:

根本不需要配置 C/C++ 编译环境。

安装依赖

我们需要一个对应版本号的 32 位的完整 python 3.8,然后新建个干净的虚拟环境:

\path\to\py38\python.exe  venv test

生成 test 目录里,大概目录是这样:

用 cmd.exe 进入 Scripts 目录,运行 activate 后,用 pip 安装你需要的包,然后到上面虚拟环境的 Lib/site-packages 里,把你需要的包找出来:

拷贝到 PyStand.exe 所在目录的 site-packages 里面即可使用,注意多余的,没有依赖的东西无需拷贝,比如上图的 pip 包。

裁剪依赖

现在你已经把依赖的包拷贝到 PyStand 的 site-packages 里了,比如 PyQt5 这个包:

进去看一眼,把你不要的模块全部删除,什么 OpenGL,AxContainer,Multimedia,PositionLocationRemoteObjectDBusQtQuickQtWebEngine 之类的,不确定的可以删除了运行下你的程序测试下行不行,不行的又拷贝回来。

然后继续进入上图 Qt5 的目录里的 bin 目录:

这里有很多尺寸很大的模块,继续删除多余的,什么 QML,Test,Help,OpenGL ,GLES,SensorBluetooth 之类的全部干掉,再到上层:

接着精简 plugins 目录里不要的东西,删除 qml/qsci然后到 translations 里把不要的语言删除掉,这么一圈下来,整个目录从原来的 134MB:

精简到 46.8 MB:


比你 PyInstaller 解压出来的 70MB 小了一大半,打包出来就是 14MB:

我已经帮你裁剪好了,你可以直接使用,还有好多可以根据你程序的需要进行裁剪,比如 openssl,sqlite 这些都非常大,总之还有很多压缩空间,按照你的程序需要还可以二次裁剪。

手工裁剪比无脑 PyInstaller 可靠的多,不但可以精细裁剪,每一步你都清晰的知道是怎么来的,出了问题你也知道该怎么回退。

二进制压缩

还可以用 upx 压缩一些比较大的文件,但 runtime 下面的 python3.dllpython38.dllvcruntime140.dll 不能压缩,而 PyQt5 里的 QtCoreQtWidgetsQtGUI 不能压缩,一边测试一边压缩,还可以进一步精简。

代码组织

你有很多 py 代码,可以在 PyStand 下面新建一个 script 目录:

在里面放一个 main.py,实现一个 main 方法,然后改写 PyStand.int

import sys, os
os.chdir(os.path.dirname(__file__))
sys.path.append(os.path.abspath('script'))
sys.path.append(os.path.abspath('script.egg'))
import main
main.main()

这个代码就是做了三件事情:矫正当前运行目录,设置 sys.path,然后导入 main 模块并执行 main 方法。注意后面 sys.path 里追加了一个 script.egg,意思是你调试好了,发布时把 script 目录里面的代码或者 pyc 压缩成要给 zip 文件,叫做 script.egg 放在 PyStand 那里删除 script 目录即可:

发布出来大概是这样,运行 PyStand.exe 成功的 import 到了 main.main() 函数:

主目录下面就三个文件,打包放到其他机器上解压就运行,不喜欢 PyStand.exe 这个名字可以随便改,同时修改 PyStand.int 的名字即可:

比如这样,运行 PyQt-Demo.exe 它会根据自身的名字,正确的找到 PyQt-Demo.int 文件并执行。

基础加密

要求不高的话,上面你将 script 目录内的 .py 文件打包成 script.egg,直接就可以发布了,至少不会满目录的 .py 文件。要求高一点的话,把 .py 先转换成 .pyc 再压缩成 script.egg,然后把关键几个模块用 cython 之类的工具转换成 .pyd 即可。

上面基础加密基本够用了,个人开发者可以就此止步,如果你是一个团队,要发布面向百万以上用户产品级的东西,追求比 PyInstaller 更安全的加密方式可以继续往下。

高级加密

接下来技巧我在 Python 2 时代都做过,你可以视精力酌情添加:

第一层:pyc 加密,自己写一个 importer,放到 PyStand.int 里初始化,作用是加载自定义的 .pz 文件,而 .pz 文件是根据 .pyo 文件加密得到,你的 importer 负责解密并加载这些字节码,把这个 importer 添加到 sys.path_hooks 里面,这样 python 就能 import .pz 文件了,再写个批处理,把项目文件全部编译转换成 .pz 压缩成 script.egg。

第二层:zip 文件加密码,参考 python 自带的 zipimporter 实现一个 zipimporter2,支持 zip 文件加密码,只要在 sys.path.append('script.egg@12345') 类似这样的路径,就可以按给定密码 import zip 内的东西,当然密码可以写的不那么明显,还可以支持 7zip 导入。

第三层:将 .dll/.pyd 封装近 python38.zip 或者 script.egg 内,这里你会用到 py2exe 的两个子模块:MemoryModule:

地址:github.com/py2exe/py2ex

可以用来从内存加载 dll/pyd,然后还有一个 zipdllimporter 的脚本,可以从内存/zip 文件直接加载 pyd/dll,这样你的所有的 pyd/dll 都可以塞到 .zip/.egg 文件里了,根本不用暴露。

第四层:源代码重新编译 Python,将很多东西直接编译进去,比如上面说的各种 importer 实现,memory importer,加密 zip 文件之类的,并且支持加密的 PyStand.int

第五层:修改字节码,找到 python 源代码的 include/opcode.h

自己魔改一遍,基本反编译的程序都蒙圈了,再到 Include/internal/pycore_ast.h 下面修改一些结构体的内部顺序,这样只要对方没有你的头文件,想从进程内存级别 intercept 进来获取字节码或者 ast 的都会非常麻烦。

第六层:静态编译,把所有第三方库和 python 自己静态编译成一个 exe 或者 dll,没有任何依赖,不暴露任何 dll 接口,集成上面说过的所有功能。由于你全部依赖都静态编译了,所以可以给 PyObject 里加两个无关的成员,调整一下已有成员顺序,别人就是进程截取 PyObject 的指针,由于没有头文件,内部结构不知道,所以它也没有任何办法。

第七层:你的可执行每次启动会检测可执行文件末尾,是否有添加的内容,如果有,把他视为一个加密的压缩包,在内存里解密并 import 对应模块,这样你上面的单个程序就可以和具体逻辑相分离,有了新的逻辑代码,压缩加密后添加在唯一可执行尾部即可。

。。。。。

还有很多类似的方法,这里仅仅抛砖引玉,没有绝对的安全,就是看你愿意投入多少人力,可以做到哪一层,个人的话,上面基础加密足够了,公司团队的话,安排人搞个一两个月,基本也就搞定了。

错误调试

这个 PyStand.exe 是窗口程序,那么出错了怎么看 exception 呢?可以打开一个 cmd.exe,用 cmd.exe 启动 PyStand,就能看到错误了,你自己也可以记录下日志,catch 一下内部的 exception。


--

更多阅读:为什么很多Python开发者写GUI不用Tkinter,而要选择PyQt和wxPython或其他?

我业余写python玩,最近写了个小工具,同事们也想要用,总不能让他们也下载python然后安装各种包吧,所以需要进行打包。

先参考了韦神的帖子:zhihu.com/question/4877

他这种手动打包的方式我很喜欢,但他自己写了个程序,作为外壳进行程序的加载。我这儿不需要加密,也希望能够深入的做一些了解,就自己做了一些工作。这儿做个记录,也给大家一个参考。

第一步:下载嵌入式python,并解压。 注意,这个python的版本和架构必须和你用的版本是一模一样的。

第二步:建立如下目录结构

  1. 主目录名称:test
  2. 主目录下面存放自己写的程序,main.py 和 other.py
  3. 主目录下建立一个子目录:runtime,并将解压后的嵌入式python拷贝到这个目录下面。
  4. runtime下建立子目录Lib,用来存放第三方库。

第三步:把普通python下的库直接拷贝到嵌入式python的Lib目录下。

普通python的第三方库在\Python39\Lib\site-packages目录下面。再次申明,两个python的架构和版本必须一致。

第四步:关键步骤,编辑python39._pth

嵌入式python下载并解压之后,里面有个很重要的文件:python39._pth,(你的文件名因为python版本的问题可能和我不同)这个文件规定了嵌入式python加载库文件的路径。打开可以看到其内容:

python39.zip
.
# Uncomment to run site.main() automatically
#import site
  1. 第一行:python39.zip的意思是从这个压缩文件里面加载库,我们打开这个压缩文件可以看到这个压缩文件下面就是各种标准库。
  2. 第二行:当前目录
  3. 后面都是注释,不用关注

我们需要增加两行

  1. 增加runtime下的Lib目录,用于加载第三方库。
  2. 增加主目录,用于加载自己的程序,比如other.py之类

此时,此文件内容如下

python39.zip
.
Lib
..\  #主目录
# Uncomment to run site.main() automatically
#import site

第五步:建立一个go.bat文件,用来进行启动。

在主目录test下,建立一个go.bat,其内容很简单,就一行。

.\runtime\python.exe main.py

到此,就基本成功了,但我碰到了几个问题,有知道的请评论区解答。

  1. 理想情况下,如果能把第三方库都打包成zip,那可以大大减小打包文件的大小,我这样做了,也把路径加到了pth文件里面。但是出错了,不能加载wxpython。我不清楚是wxpython的问题还是其他问题造成的。
  2. 我的程序里面用了prettytable,我把它拷贝到lib目录下之后,加载失败,还需要把另外一个目录“prettytable-3.2.0.dist-info”也加进去才行。