');-webkit-background-clip:text;background-clip:text;color:transparent}.Logo__Container .Logo .text{font-size:14.4px;font-style:italic;color:#a3cacd}.Logo__Container .Logo .stateof{top:0;left:0}.Logo__Container .Logo .year{bottom:0;right:0;text-align:right}.Logo__Container .Logo .triangle{width:43.2px;top:54px;left:4.8px}.Logo__Container .Logo .triangle .inner{width:100%;border:30px solid transparent;border-bottom-color:#3c52d1;border-width:0 21.6px 30px}.Logo__Container .Logo .stripe{height:1.5px;width:30px;background:#a3cacd}.Logo__Container .Logo .stripe1{top:74.4px;left:28.8px}.Logo__Container .Logo .stripe2{top:80.4px;left:26.4px}.Logo__Container .Logo .stripe3{top:86.4px;left:24px}.Logo__Container .Logo .stripe4{top:92.4px;left:26.4px}.Logo__Container .Logo .blobs{-webkit-filter:url(#blob);filter:url(#blob);left:30px;top:36px;transform:rotate(-20deg);width:120px;height:60px;display:flex;justify-content:center;align-items:center}.Logo__Container .Logo .blob{width:50%;height:100%;background:#a3cacd;border-radius:50%}.Logo__Container .Logo .blob2{transform:translateX(-12px)}.Logo__Container .Logo .circle{width:76.8px;top:50%;left:calc(50% - 3px)}.Logo__Container .Logo .circle .inner{transform:translateX(-50%) translateY(-50%)}.Logo__Container .Logo .circle .inner div{width:100%;height:0;padding-bottom:100%;border:3px dashed #3c52d1;border-radius:100%;box-sizing:content-box}.Logo__Container .Logo .frame{width:64.8px;right:26.4px;top:50%}.Logo__Container .Logo .frame .inner{transform:translateY(-50%) rotate(45deg)}.Logo__Container .Logo .frame .inner div{border:3px solid #3c52d1;width:100%;height:0;padding-bottom:100%;box-sizing:content-box;box-shadow:2.1px 2.1px 0 0 #a3cacd}.Logo__Container .Logo .tilde{font-size:33.6px;line-height:1}.Logo__Container .Logo .tilde1{top:24px;right:12px}.Logo__Container .Logo .tilde2{top:30px;right:9.6px}.Logo__Container .Logo .tilde3{top:36px;right:7.2px}.Logo__Container .Logo--animated .c>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .s1>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .s2>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.3s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .circle>div>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:popspin;animation-duration:.6s;animation-delay:.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0)}.Logo__Container .Logo--animated .frame{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slidetop;animation-duration:.6s;animation-delay:.8s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0) translateY(-60px) rotate(180deg)}.Logo__Container .Logo--animated .blob1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.9s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .blob2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:blob;animation-duration:.5s;animation-delay:1.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-100%)}.Logo__Container .Logo--animated .stripe1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.4s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(12px)}.Logo__Container .Logo--animated .stripe2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(12px)}.Logo__Container .Logo--animated .stripe3{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.6s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(12px)}.Logo__Container .Logo--animated .stripe4{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.7s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(12px)}.Logo__Container .Logo--animated .tilde1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:1.9s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-12px)}.Logo__Container .Logo--animated .tilde2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-12px)}.Logo__Container .Logo--animated .tilde3{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:2.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-12px)}.Logo__Container .Logo--animated .triangle{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:popspin;animation-duration:.6s;animation-delay:2.8s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0)}.Logo__Container .Logo--animated .stateof{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:appear;animation-duration:.3s;animation-delay:2.2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0}.Logo__Container .Logo--animated .year{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:appear;animation-duration:.3s;animation-delay:2.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0}}@media screen and (min-width:600px) and (max-width:999px){.Logo__Container .Logo{text-shadow:none;width:400px;height:200px;position:relative}.Logo__Container .Logo>*{position:absolute}.Logo__Container .Logo .letter{font-size:144px;color:#f649a7;font-weight:800;line-height:1}.Logo__Container .Logo .c{top:50%;transform:translateY(-50%);left:48px;text-shadow:5px 5px 0 #3c52d1}.Logo__Container .Logo .s1{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.Logo__Container .Logo .s2{top:50%;transform:translateY(-50%);right:48px}.Logo__Container .Logo .s2 div{text-align:right;background:url('data:image/svg+xml;utf8, ');-webkit-background-clip:text;background-clip:text;color:transparent}.Logo__Container .Logo .text{font-size:24px;font-style:italic;color:#a3cacd}.Logo__Container .Logo .stateof{top:0;left:0}.Logo__Container .Logo .year{bottom:0;right:0;text-align:right}.Logo__Container .Logo .triangle{width:72px;top:90px;left:8px}.Logo__Container .Logo .triangle .inner{width:100%;border:50px solid transparent;border-bottom-color:#3c52d1;border-width:0 36px 50px}.Logo__Container .Logo .stripe{height:2.5px;width:50px;background:#a3cacd}.Logo__Container .Logo .stripe1{top:124px;left:48px}.Logo__Container .Logo .stripe2{top:134px;left:44px}.Logo__Container .Logo .stripe3{top:144px;left:40px}.Logo__Container .Logo .stripe4{top:154px;left:44px}.Logo__Container .Logo .blobs{-webkit-filter:url(#blob);filter:url(#blob);left:50px;top:60px;transform:rotate(-20deg);width:200px;height:100px;display:flex;justify-content:center;align-items:center}.Logo__Container .Logo .blob{width:50%;height:100%;background:#a3cacd;border-radius:50%}.Logo__Container .Logo .blob2{transform:translateX(-20px)}.Logo__Container .Logo .circle{width:128px;top:50%;left:calc(50% - 5px)}.Logo__Container .Logo .circle .inner{transform:translateX(-50%) translateY(-50%)}.Logo__Container .Logo .circle .inner div{width:100%;height:0;padding-bottom:100%;border:5px dashed #3c52d1;border-radius:100%;box-sizing:content-box}.Logo__Container .Logo .frame{width:108px;right:44px;top:50%}.Logo__Container .Logo .frame .inner{transform:translateY(-50%) rotate(45deg)}.Logo__Container .Logo .frame .inner div{border:5px solid #3c52d1;width:100%;height:0;padding-bottom:100%;box-sizing:content-box;box-shadow:3.5px 3.5px 0 0 #a3cacd}.Logo__Container .Logo .tilde{font-size:56px;line-height:1}.Logo__Container .Logo .tilde1{top:40px;right:20px}.Logo__Container .Logo .tilde2{top:50px;right:16px}.Logo__Container .Logo .tilde3{top:60px;right:12px}.Logo__Container .Logo--animated .c>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .s1>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .s2>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.3s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .circle>div>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:popspin;animation-duration:.6s;animation-delay:.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0)}.Logo__Container .Logo--animated .frame{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slidetop;animation-duration:.6s;animation-delay:.8s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0) translateY(-100px) rotate(180deg)}.Logo__Container .Logo--animated .blob1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.9s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .blob2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:blob;animation-duration:.5s;animation-delay:1.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-100%)}.Logo__Container .Logo--animated .stripe1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.4s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(20px)}.Logo__Container .Logo--animated .stripe2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(20px)}.Logo__Container .Logo--animated .stripe3{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.6s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(20px)}.Logo__Container .Logo--animated .stripe4{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.7s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(20px)}.Logo__Container .Logo--animated .tilde1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:1.9s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-20px)}.Logo__Container .Logo--animated .tilde2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-20px)}.Logo__Container .Logo--animated .tilde3{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:2.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-20px)}.Logo__Container .Logo--animated .triangle{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:popspin;animation-duration:.6s;animation-delay:2.8s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0)}.Logo__Container .Logo--animated .stateof{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:appear;animation-duration:.3s;animation-delay:2.2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0}.Logo__Container .Logo--animated .year{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:appear;animation-duration:.3s;animation-delay:2.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0}}@media screen and (min-width:1000px){.Logo__Container .Logo{text-shadow:none;width:640px;height:320px;position:relative}.Logo__Container .Logo>*{position:absolute}.Logo__Container .Logo .letter{font-size:230.4px;color:#f649a7;font-weight:800;line-height:1}.Logo__Container .Logo .c{top:50%;transform:translateY(-50%);left:76.8px;text-shadow:8px 8px 0 #3c52d1}.Logo__Container .Logo .s1{left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.Logo__Container .Logo .s2{top:50%;transform:translateY(-50%);right:76.8px}.Logo__Container .Logo .s2 div{text-align:right;background:url('data:image/svg+xml;utf8, ');-webkit-background-clip:text;background-clip:text;color:transparent}.Logo__Container .Logo .text{font-size:38.4px;font-style:italic;color:#a3cacd}.Logo__Container .Logo .stateof{top:0;left:0}.Logo__Container .Logo .year{bottom:0;right:0;text-align:right}.Logo__Container .Logo .triangle{width:115.2px;top:144px;left:12.8px}.Logo__Container .Logo .triangle .inner{width:100%;border:80px solid transparent;border-bottom-color:#3c52d1;border-width:0 57.6px 80px}.Logo__Container .Logo .stripe{height:4px;width:80px;background:#a3cacd}.Logo__Container .Logo .stripe1{top:198.4px;left:76.8px}.Logo__Container .Logo .stripe2{top:214.4px;left:70.4px}.Logo__Container .Logo .stripe3{top:230.4px;left:64px}.Logo__Container .Logo .stripe4{top:246.4px;left:70.4px}.Logo__Container .Logo .blobs{-webkit-filter:url(#blob);filter:url(#blob);left:80px;top:96px;transform:rotate(-20deg);width:320px;height:160px;display:flex;justify-content:center;align-items:center}.Logo__Container .Logo .blob{width:50%;height:100%;background:#a3cacd;border-radius:50%}.Logo__Container .Logo .blob2{transform:translateX(-32px)}.Logo__Container .Logo .circle{width:204.8px;top:50%;left:calc(50% - 8px)}.Logo__Container .Logo .circle .inner{transform:translateX(-50%) translateY(-50%)}.Logo__Container .Logo .circle .inner div{width:100%;height:0;padding-bottom:100%;border:8px dashed #3c52d1;border-radius:100%;box-sizing:content-box}.Logo__Container .Logo .frame{width:172.8px;right:70.4px;top:50%}.Logo__Container .Logo .frame .inner{transform:translateY(-50%) rotate(45deg)}.Logo__Container .Logo .frame .inner div{border:8px solid #3c52d1;width:100%;height:0;padding-bottom:100%;box-sizing:content-box;box-shadow:5.6px 5.6px 0 0 #a3cacd}.Logo__Container .Logo .tilde{font-size:89.6px;line-height:1}.Logo__Container .Logo .tilde1{top:64px;right:32px}.Logo__Container .Logo .tilde2{top:80px;right:25.6px}.Logo__Container .Logo .tilde3{top:96px;right:19.2px}.Logo__Container .Logo--animated .c>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .s1>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .s2>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.3s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .circle>div>div{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:popspin;animation-duration:.6s;animation-delay:.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0)}.Logo__Container .Logo--animated .frame{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slidetop;animation-duration:.6s;animation-delay:.8s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0) translateY(-160px) rotate(180deg)}.Logo__Container .Logo--animated .blob1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:pop;animation-duration:.3s;animation-delay:.9s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:scale(0)}.Logo__Container .Logo--animated .blob2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:blob;animation-duration:.5s;animation-delay:1.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-100%)}.Logo__Container .Logo--animated .stripe1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.4s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(32px)}.Logo__Container .Logo--animated .stripe2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(32px)}.Logo__Container .Logo--animated .stripe3{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.6s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(32px)}.Logo__Container .Logo--animated .stripe4{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideleft;animation-duration:.4s;animation-delay:1.7s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(32px)}.Logo__Container .Logo--animated .tilde1{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:1.9s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-32px)}.Logo__Container .Logo--animated .tilde2{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-32px)}.Logo__Container .Logo--animated .tilde3{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:slideright;animation-duration:.4s;animation-delay:2.1s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0;transform:translateX(-32px)}.Logo__Container .Logo--animated .triangle{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:popspin;animation-duration:.6s;animation-delay:2.8s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);transform:scale(0)}.Logo__Container .Logo--animated .stateof{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:appear;animation-duration:.3s;animation-delay:2.2s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0}.Logo__Container .Logo--animated .year{animation-iteration-count:1;animation-fill-mode:forwards;animation-name:appear;animation-duration:.3s;animation-delay:2.5s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:0}}.Feature__Links,.Feature__Support{font-size:.9rem;font-weight:400}.FTBlock__Links__Item{margin-bottom:6.66667px}.Features__Overview{display:flex;flex-wrap:wrap;justify-content:space-between}.Features__Overview__Item{width:240px;height:260px;margin-bottom:40px;display:grid;grid-template-rows:210px 50px}.Features__Overview__Item__Footer{border-top:2px solid #9ac6c9;border-bottom:2px solid #9ac6c9;font-size:.9rem;font-weight:800;display:flex;justify-content:center;align-items:center}.Features__Overview__Item__Footer:hover{background:#9ac6c9;color:#fff;cursor:pointer}.capture .FTBlock__Description{grid-column:1/3}@media screen and (max-width:599px){.FTBlock__Resources{margin-top:20px}}.FTBlock__Resources h3{margin-bottom:10px;font-size:1rem}.FTBlock__Resources ul{padding-left:20px}.capture .FTBlock__Resources{display:none}.OpinionScaleChart{padding-top:20px}.OpinionScaleChart svg{overflow:visible}.FeaturesOverviewChart{height:100%}@media screen and (max-width:599px){.FeaturesSectionOverviewChart{height:200px;height:400px}}@media screen and (min-width:600px) and (max-width:999px){.FeaturesSectionOverviewChart{height:500px}}@media screen and (min-width:1000px){.FeaturesSectionOverviewChart{height:500px}}.ToolsOverviewCirclePackingChart svg{overflow:visible}@media screen and (max-width:599px){.TechnologiesOverviewChart{height:800px}}@media screen and (min-width:600px) and (max-width:999px){.TechnologiesOverviewChart{height:800px}}@media screen and (min-width:1000px){.TechnologiesOverviewChart{height:800px}}.Quadrant__Label{color:#41c7c7;fill:#41c7c7;text-transform:uppercase;letter-spacing:3px;opacity:.75;font-size:1.3rem}.Scatterplot__Node{transition:all .5s ease-out}.Scatterplot__Node--active .Scatterplot__Node__Crosshairs{opacity:1;transition:all .2s ease-out}.Scatterplot__Node--active .Scatterplot__Node__Label{transform:translateX(30px);transition:all .2s ease-out}.Scatterplot__Node--active .Scatterplot__Node__Label__Background{opacity:.75;transition:all .2s ease-out}.Scatterplot__Node--active .Scatterplot__Node__Label__Text{fill:#232840;transition:all .2s ease-out}.Scatterplot__Node--active .Scatterplot__Node__Crosshair__Line{stroke-dasharray:8,4;animation:svgAnts 50s linear infinite;animation-fill-mode:forwards}.Scatterplot__Node--inactive{opacity:.3;transition:all .5s ease-out}.Scatterplot__Node__Label{pointer-events:none;transition:all .2s ease-out}.Scatterplot__Node__Label__Background{opacity:0;transition:all .2s ease-out}.Scatterplot__Node__Label__Text{font-size:.8rem;transition:all .2s ease-out}.Scatterplot__Node__Crosshairs{pointer-events:none;opacity:0;transition:all .2s ease-out}.Scatterplot__Node__PointHover{opacity:.75}.Scatterplot__Node__Crosshair__Label{font-size:.8rem}.text-highlight{background:#41c7c7;background:#000}.text-green,.text-highlight{display:inline-block;color:#232840;border-radius:15px;padding:0 12px;font-weight:800}.text-green{background:#41c7c7;background:#85eba2}.text-pink{background:#41c7c7;background:#f649a7}.text-pink,.text-pink-light{display:inline-block;color:#232840;border-radius:15px;padding:0 12px;font-weight:800}.text-pink-light{background:#41c7c7;background:#ec75cb}.text-pink-lighter{background:#41c7c7;background:#d68df0}.text-pink-lighter,.text-red{display:inline-block;color:#232840;border-radius:15px;padding:0 12px;font-weight:800}.text-red{background:#41c7c7;background:#fe6a6a}.text-teal{background:#41c7c7}.text-teal,.text-teal-dark{display:inline-block;color:#232840;border-radius:15px;padding:0 12px;font-weight:800}.text-teal-dark{background:#41c7c7;background:#2ba7a7}.text-teal-darker{background:#41c7c7;background:#1d7e7e}.text-blue,.text-teal-darker{display:inline-block;color:#232840;border-radius:15px;padding:0 12px;font-weight:800}.text-blue{background:#41c7c7;background:#3c52d1}.text-blackred{display:inline-block;background:#41c7c7;color:#232840;border-radius:15px;padding:0 12px;background:rgba(0,0,0,.3);color:#41c7c7;border:1px solid #fe6a6a}.text-blackred,.text-bold{font-weight:800}.Chip{display:block;margin-right:7px;position:relative;overflow:hidden;height:12px;width:12px}.Chip__Inner{height:100%;width:100%;display:block}.Chip--split .Chip__Inner{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1}.Chip--split .Chip__Inner:last-child{z-index:2;width:200%;height:100%;transform:translateX(-3px) translateY(5px) rotate(-45deg)}.react-tabs{-webkit-tap-highlight-color:transparent}.react-tabs__tab-list{border-bottom:1px solid #aaa;margin:0 0 10px;padding:0}.react-tabs__tab{display:inline-block;border:1px solid transparent;border-bottom:none;bottom:-1px;position:relative;list-style:none;padding:6px 12px;cursor:pointer}.react-tabs__tab--selected{background:#fff;border-color:#aaa;color:#000;border-radius:5px 5px 0 0}.react-tabs__tab--disabled{color:GrayText;cursor:default}.react-tabs__tab:focus{box-shadow:0 0 5px #0188fe;border-color:#0188fe;outline:none}.react-tabs__tab:focus:after{content:"";position:absolute;height:5px;left:-4px;right:-4px;bottom:-5px;background:#fff}.react-tabs__tab-panel{display:none}.react-tabs__tab-panel--selected{display:block}.ToolsArrowsChart{position:relative;margin:auto;display:flex}@media (max-width:800px){.ToolsArrowsChart{padding-left:0;padding-right:0}}.ToolsArrowsChart svg{fill:#e0e4e4;overflow:visible}.ToolsArrowsChart__svg{position:absolute;top:0;right:0;bottom:0;left:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.ToolsArrowsChart__axis{stroke:#484f73;stroke-width:1px}.ToolsArrowsChart__axis__label{text-transform:uppercase;letter-spacing:.1em;font-size:.66em;font-weight:600;fill-opacity:.5;dominant-baseline:middle}@keyframes gradientLineSegmentIn{0%{stroke-opacity:0}to{stroke-opacity:1}}.ToolsArrowsChart__tool--is-hidden{opacity:0;pointer-events:none}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line{stroke-opacity:0;animation:gradientLineSegmentIn .2s ease-out;animation-fill-mode:forwards}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-0{animation-delay:0s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-1{animation-delay:.03s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-2{animation-delay:.06s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-3{animation-delay:.09s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-4{animation-delay:.12s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-5{animation-delay:.15s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-6{animation-delay:.18s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-7{animation-delay:.21s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-8{animation-delay:.24s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-9{animation-delay:.27s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-10{animation-delay:.3s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-11{animation-delay:.33s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-12{animation-delay:.36s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-13{animation-delay:.39s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-14{animation-delay:.42s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-15{animation-delay:.45s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-16{animation-delay:.48s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-17{animation-delay:.51s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-18{animation-delay:.54s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-19{animation-delay:.57s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-20{animation-delay:.6s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-21{animation-delay:.63s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-22{animation-delay:.66s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-23{animation-delay:.69s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-24{animation-delay:.72s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-25{animation-delay:.75s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-26{animation-delay:.78s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-27{animation-delay:.81s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-28{animation-delay:.84s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-29{animation-delay:.87s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-30{animation-delay:.9s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-31{animation-delay:.93s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-32{animation-delay:.96s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-33{animation-delay:.99s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-34{animation-delay:1.02s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-35{animation-delay:1.05s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-36{animation-delay:1.08s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-37{animation-delay:1.11s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-38{animation-delay:1.14s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-39{animation-delay:1.17s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-40{animation-delay:1.2s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-41{animation-delay:1.23s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-42{animation-delay:1.26s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-43{animation-delay:1.29s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-44{animation-delay:1.32s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-45{animation-delay:1.35s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-46{animation-delay:1.38s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-47{animation-delay:1.41s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-48{animation-delay:1.44s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-49{animation-delay:1.47s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-50{animation-delay:1.5s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-51{animation-delay:1.53s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-52{animation-delay:1.56s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-53{animation-delay:1.59s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-54{animation-delay:1.62s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-55{animation-delay:1.65s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-56{animation-delay:1.68s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-57{animation-delay:1.71s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-58{animation-delay:1.74s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-59{animation-delay:1.77s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-60{animation-delay:1.8s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-61{animation-delay:1.83s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-62{animation-delay:1.86s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-63{animation-delay:1.89s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-64{animation-delay:1.92s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-65{animation-delay:1.95s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-66{animation-delay:1.98s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-67{animation-delay:2.01s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-68{animation-delay:2.04s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-69{animation-delay:2.07s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-70{animation-delay:2.1s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-71{animation-delay:2.13s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-72{animation-delay:2.16s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-73{animation-delay:2.19s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-74{animation-delay:2.22s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-75{animation-delay:2.25s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-76{animation-delay:2.28s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-77{animation-delay:2.31s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-78{animation-delay:2.34s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-79{animation-delay:2.37s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-80{animation-delay:2.4s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-81{animation-delay:2.43s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-82{animation-delay:2.46s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-83{animation-delay:2.49s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-84{animation-delay:2.52s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-85{animation-delay:2.55s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-86{animation-delay:2.58s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-87{animation-delay:2.61s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-88{animation-delay:2.64s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-89{animation-delay:2.67s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-90{animation-delay:2.7s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-91{animation-delay:2.73s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-92{animation-delay:2.76s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-93{animation-delay:2.79s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-94{animation-delay:2.82s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-95{animation-delay:2.85s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-96{animation-delay:2.88s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-97{animation-delay:2.91s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-98{animation-delay:2.94s}.ToolsArrowsChart__tool--is-active .ToolsArrowsChart__gradient-line--nth-99{animation-delay:2.97s}.ToolsArrowsChart__tool--is-hovering .ToolsArrowsChart__year{fill-opacity:1}.ToolsArrowsChart__tool--is-hovering-other text{fill-opacity:0;stroke-opacity:0}.ToolsArrowsChart__tool--is-hovering-other .ToolsArrowsChart__gradient-line{stroke:#232840;stroke-width:1!important}.ToolsArrowsChart__tool--is-hovering-other .ToolsArrowsChart__now{fill-opacity:.2!important}.ToolsArrowsChart__hover-background{stroke-width:30px;stroke:transparent;fill:none}.ToolsArrowsChart__year{fill-opacity:0}.ToolsArrowsChart__gradient-line{fill:none;stroke-width:4.5px;mix-blend-mode:lighten;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}@keyframes fadeInSlideUp{0%{fill-opacity:0;transform:translateY(1em)}to{fill-opacity:1;transform:translateY(0)}}.ToolsArrowsChart__year{font-size:.8em;font-weight:600;pointer-events:none}.ToolsArrowsChart__label-background{font-size:.8em;font-weight:600;stroke:#1a1f35;stroke-width:3px}.ToolsArrowsChart__label{font-size:.8em;font-weight:600}.ToolsArrowsChart__label__box{cursor:default}.ToolsArrowsChart__label__box text{pointer-events:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ToolsArrowsChart__listener{fill:transparent}.ToolsArrowsChart__label{cursor:pointer}.ToolsArrowsChart__label:hover{fill:#fff}
State of JS 2020: Тестування [ua-UA] general.skip_to_content [ua-UA] general.open_nav
Інструменти для тестування коду
Загальні показники [ua-UA] general.more_actions Задоволеність Зацікавленість Використання Впізнаваність
Відсоток задоволеності, зацікавленості, використання, впізнаваності.
2016 2017 2018 2019 2020 2016 2017 2018 2019 2020 Jest Mocha AVA Jasmine Jest Mocha Storybook Cypress AVA Jasmine Puppeteer Testing Library Playwright WebdriverIO 59% 94% 97% 96% 96% 94% 87% 82% 78% 74% 89% 92% 91% 93% 94% 85% 75% 72% 63% 61% 83% 80% 75% 67% 62% 89% 88% 97% 93% 53% Не враховуються технології з відомістю менше 10%. Кожне співвідношення визначається наступним чином:
Задоволеність: порівняння відповідей Буду використовувати знову і Більше не буду використовуват . Зацікавленість: порівняння відповідей Хочу вивчити і Не цікаво . Використання: порівняння відповідей Буду використовувати знову / Більше не буду використовувати з загальною кількістю. Впізнаваність: різниця між кількістю відповідей за впізнаваністю та кількістю відповідей за варіант відповіді Вперше чую . We asked members of the JavaScript community to share their “pick of the year”
RedwoodJS and frameworks like it are starting to change how we think about development.
It’s bringing the ease of Ruby on Rails to the front-end ecosystem.
We asked members of the JavaScript community to share their “pick of the year”
Досвід роботи [ua-UA] general.more_actions Аналіз відповідей по досліджуваним технологіям в порівнянні з попереднім роком.
Не буду більше використовувати
Не цікаво
Буду ще використовувати
Цікаво
Вперше чую
Не враховуються технології, дані по яких є тільки за один рік.
Сравнение положительных и негативных ответов [ua-UA] general.more_actions
На наступній діаграмі розділені позитивні ("Хочу вивчити", "Буду використовувати знову") і негативні ("Не цікаво", "Більше не буду використовувати") відповіді справа і зліва, відповідно, щодо центральної осі.
Ширина стовпця являє собою кількість респондентів, знайомих з розглянутою технологією.
Інші інструменти Відсоток заповнення: 1.7% (403)
Відсоток заповнення: 1.7% (403)
[ua-UA] general.more_actions Інші інструменти в цій категорії (відповіді у вільній формі).
Загальний показник задоволеності [ua-UA] general.more_actions
За шкалою від одного (дуже незадоволений) до п'яти (дуже задоволений),
наскільки задоволені розробники поточним станом цієї категорії?
2016 2017 2018 2019 2020 ☹️ 🙂 2016 2017 2018 2019 2020 ☹️ 🙂 3.2 3.3 3.6 3.1 3 Рекомендовані ресурси [ua-UA] general.more_actions
WebTestIt lets developers build reliable and efficient UI web tests for Selenium and Protractor. Check it out.
You'll get hands-on experience with best-in-class tools designed to keep the workflows for even complex projects simple!