Commit ee6fd2a1 by liuronglei

feat(index): 增加介绍网站(待完善)

parent 5f5e8e77
<html>
<body>
<h1>SparrowZZ</h1>
</body>
<html lang="en" class="js fontawesome-i2svg-active fontawesome-i2svg-complete">
<head>
<meta charset="utf-8">
<!-- begin _includes/seo.html -->
<title>Sparrowzz - Sparrowzz</title>
<meta name="description" content="低代码控制器">
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Sparrowzz">
<meta property="og:title" content="低代码控制器">
<meta property="og:description" content="低代码控制器">
<!-- end _includes/seo.html -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- For all browsers -->
<link rel="stylesheet" href="./index/assets/css/main.css">
<script type="text/javascript" src="./index/assets/js/index.js"></script>
</head>
<body class="layout--splash">
<object data="./index/header.html" class="header-page"></object>
<div class="initial-content">
<div class="page__hero--overlay back-img">
<div class="wrapper">
<h1 id="page-title" class="page__title" itemprop="headline">
Sparrowzz
</h1>
<p class="page__lead">这是Sparrowzz总体介绍这是Sparrowzz总体介绍这是Sparrowzz总体介绍这是Sparrowzz总体介绍
</p>
<a>
<img src="./index/assets/img/badge.svg">
</a>
<p>
<a href="/start/#install" class="btn btn--light-outline btn--large">
<img src="./index/assets/img/download.svg" class="index-prefix" /><!-- <i class="fas fa-download"></i> --> 下载安装
</a>
<a href="/contact/#list" class="btn btn--light-outline btn--large">
<img src="./index/assets/img/envelope.svg" class="index-prefix" /><!-- <i class="fas fa-envelope"></i> --> 获取更新
</a>
</p>
</div>
</div>
<div id="main" role="main">
<article class="splash" itemscope="" itemtype="http://schema.org/CreativeWork">
<meta itemprop="headline" content="pandapower">
<meta itemprop="description" content="An easy to use open source tool for power system modeling, analysis and optimization with a high degree of automation.">
<section class="page__content" itemprop="text">
<p>开始使用Sparrowzz,您需要</p>
<ol>
<li>
<p>编译Sparrowzz主程序:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>这是Sparrowzz主程序编译脚本
</code></pre>
</div>
</div>
</li>
<li>
<p>运行Sparrowzz主程序:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>这是Sparrowzz主程序运行脚本
</code></pre>
</div>
</div>
</li>
<li>
<p>配置Sparrowzz实例:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>这是Sparrowzz实例配置
</code></pre>
</div>
</div>
</li>
<li>
<p>运行Sparrowzz实例:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>这是Sparrowzz实例运行
</code></pre>
</div>
</div>
</li>
<li>
<p>查看实例运行结果:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>这是Sparrowzz实例运行结果查看
</code></pre>
</div>
</div>
</li>
</ol>
<p>使用Sparrowzz,您可以完成:</p>
<div class="feature__wrapper">
</div>
<div class="feature__wrapper">
<div class="feature__item">
<div class="archive__item">
<div class="archive__item-teaser">
<img src="./index/assets/img/electric_modeling.png" alt="">
</div>
<div class="archive__item-body">
<h2 class="archive__item-title">Electric Modeling</h2>
<div class="archive__item-excerpt">
<p>Includes thoroughly validated equivalent circuit models for lines, transformers, switches and more.</p>
</div>
<p>
<a href="./index/about.html#modeling" class="btn btn--primary">了解更多</a>
</p>
</div>
</div>
</div>
<div class="feature__item">
<div class="archive__item">
<div class="archive__item-teaser">
<img src="./index/assets/img/power_flow.png" alt="">
</div>
<div class="archive__item-body">
<h2 class="archive__item-title">Power System Analysis</h2>
<div class="archive__item-excerpt">
<p>Supports power flow, optimal power flow, state estimation, short-circuit calculation and topological graph searches.</p>
</div>
<p>
<a href="./index/about.html#analysis" class="btn btn--primary">了解更多</a>
</p>
</div>
</div>
</div>
<div class="feature__item">
<div class="archive__item">
<div class="archive__item-teaser">
<img src="./index/assets/img/osi_symbol.png" alt="">
</div>
<div class="archive__item-body">
<h2 class="archive__item-title">Free and Open</h2>
<div class="archive__item-excerpt">
<p>Published under a BSD License and therefore free to use, modify and share however you want.</p>
</div>
<p>
<a href="https://github.com/shufengdong/sparrowzz/" class="btn btn--primary">在github中浏览</a>
</p>
</div>
</div>
</div>
</div>
</section>
</article>
</div>
</div>
<aside class="sidebar__top">
<a href="#" id="sidebar">
<img src="./index/assets/img/angle-double-up.svg" /><!-- <i class="fas fa-angle-double-up fa-2x"></i> -->
</a>
</aside>
<object data="./index/footer.html" class="footer-page"></object>
</body>
</html>
\ No newline at end of file
.mfp-counter {
font-family: Georgia,Times,serif
}
.mfp-bg {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1042;
overflow: hidden;
position: fixed;
background: #000;
opacity: .8;
filter: alpha(opacity=80)
}
.mfp-wrap {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1043;
position: fixed;
outline: none !important;
-webkit-backface-visibility: hidden
}
.mfp-container {
text-align: center;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
padding: 0 8px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box
}
.mfp-container:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle
}
.mfp-align-top .mfp-container:before {
display: none
}
.mfp-content {
position: relative;
display: inline-block;
vertical-align: middle;
margin: 0 auto;
text-align: left;
z-index: 1045
}
.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content {
width: 100%;
cursor: auto
}
.mfp-ajax-cur {
cursor: progress
}
.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close {
cursor: -moz-zoom-out;
cursor: -webkit-zoom-out;
cursor: zoom-out
}
.mfp-zoom {
cursor: pointer;
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: zoom-in
}
.mfp-auto-cursor .mfp-content {
cursor: auto
}
.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none
}
.mfp-loading.mfp-figure {
display: none
}
.mfp-hide {
display: none !important
}
.mfp-preloader {
color: #ccc;
position: absolute;
top: 50%;
width: auto;
text-align: center;
margin-top: -0.8em;
left: 8px;
right: 8px;
z-index: 1044
}
.mfp-preloader a {
color: #ccc
}
.mfp-preloader a:hover {
color: #fff
}
.mfp-s-ready .mfp-preloader {
display: none
}
.mfp-s-error .mfp-content {
display: none
}
button.mfp-close,button.mfp-arrow {
overflow: visible;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
display: block;
outline: none;
padding: 0;
z-index: 1046;
-webkit-box-shadow: none;
box-shadow: none
}
button::-moz-focus-inner {
padding: 0;
border: 0
}
.mfp-close {
width: 44px;
height: 44px;
line-height: 44px;
position: absolute;
right: 0;
top: 0;
text-decoration: none;
text-align: center;
opacity: 1;
filter: alpha(opacity=100);
padding: 0 0 18px 10px;
color: #fff;
font-style: normal;
font-size: 28px;
font-family: Georgia,Times,serif
}
.mfp-close:hover,.mfp-close:focus {
opacity: 1;
filter: alpha(opacity=100)
}
.mfp-close:active {
top: 1px
}
.mfp-close-btn-in .mfp-close {
color: #fff
}
.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close {
color: #fff;
right: -6px;
text-align: right;
padding-right: 6px;
width: 100%
}
.mfp-counter {
position: absolute;
top: 0;
right: 0;
color: #ccc;
font-size: 12px;
line-height: 18px
}
.mfp-arrow {
position: absolute;
opacity: 1;
filter: alpha(opacity=100);
margin: 0;
top: 50%;
margin-top: -55px;
padding: 0;
width: 90px;
height: 110px;
-webkit-tap-highlight-color: transparent
}
.mfp-arrow:active {
margin-top: -54px
}
.mfp-arrow:hover,.mfp-arrow:focus {
opacity: 1;
filter: alpha(opacity=100)
}
.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
left: 0;
top: 0;
margin-top: 35px;
margin-left: 35px;
border: medium inset transparent
}
.mfp-arrow:after,.mfp-arrow .mfp-a {
border-top-width: 13px;
border-bottom-width: 13px;
top: 8px
}
.mfp-arrow:before,.mfp-arrow .mfp-b {
border-top-width: 21px;
border-bottom-width: 21px;
opacity: 0.7
}
.mfp-arrow-left {
left: 0
}
.mfp-arrow-left:after,.mfp-arrow-left .mfp-a {
border-right: 17px solid #fff;
margin-left: 31px
}
.mfp-arrow-left:before,.mfp-arrow-left .mfp-b {
margin-left: 25px;
border-right: 27px solid #fff
}
.mfp-arrow-right {
right: 0
}
.mfp-arrow-right:after,.mfp-arrow-right .mfp-a {
border-left: 17px solid #fff;
margin-left: 39px
}
.mfp-arrow-right:before,.mfp-arrow-right .mfp-b {
border-left: 27px solid #fff
}
.mfp-iframe-holder {
padding-top: 40px;
padding-bottom: 40px
}
.mfp-iframe-holder .mfp-content {
line-height: 0;
width: 100%;
max-width: 900px
}
.mfp-iframe-holder .mfp-close {
top: -40px
}
.mfp-iframe-scaler {
width: 100%;
height: 0;
overflow: hidden;
padding-top: 56.25%
}
.mfp-iframe-scaler iframe {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 0 8px rgba(0,0,0,0.6);
background: #000
}
img.mfp-img {
width: auto;
max-width: 100%;
height: auto;
display: block;
line-height: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 40px 0 40px;
margin: 0 auto
}
.mfp-figure {
line-height: 0
}
.mfp-figure:after {
content: '';
position: absolute;
left: 0;
top: 40px;
bottom: 40px;
display: block;
right: 0;
width: auto;
height: auto;
z-index: -1;
box-shadow: 0 0 8px rgba(0,0,0,0.6);
background: #444
}
.mfp-figure small {
color: #bdbdbd;
display: block;
font-size: 12px;
line-height: 14px
}
.mfp-figure figure {
margin: 0
}
.mfp-figure figcaption {
margin-top: 0;
margin-bottom: 0
}
.mfp-bottom-bar {
margin-top: -36px;
position: absolute;
top: 100%;
left: 0;
width: 100%;
cursor: auto
}
.mfp-title {
text-align: left;
line-height: 18px;
color: #f3f3f3;
word-wrap: break-word;
padding-right: 36px
}
.mfp-image-holder .mfp-content {
max-width: 100%
}
.mfp-gallery .mfp-image-holder .mfp-figure {
cursor: pointer
}
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
.mfp-img-mobile .mfp-image-holder {
padding-left: 0;
padding-right: 0
}
.mfp-img-mobile img.mfp-img {
padding: 0
}
.mfp-img-mobile .mfp-figure:after {
top: 0;
bottom: 0
}
.mfp-img-mobile .mfp-figure small {
display: inline;
margin-left: 5px
}
.mfp-img-mobile .mfp-bottom-bar {
background: rgba(0,0,0,0.6);
bottom: 0;
margin: 0;
top: auto;
padding: 3px 5px;
position: fixed;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box
}
.mfp-img-mobile .mfp-bottom-bar:empty {
padding: 0
}
.mfp-img-mobile .mfp-counter {
right: 5px;
top: 3px
}
.mfp-img-mobile .mfp-close {
top: 0;
right: 0;
width: 35px;
height: 35px;
line-height: 35px;
background: rgba(0,0,0,0.6);
position: fixed;
text-align: center;
padding: 0
}
}
@media all and (max-width: 900px) {
.mfp-arrow {
-webkit-transform: scale(0.75);
transform: scale(0.75)
}
.mfp-arrow-left {
-webkit-transform-origin: 0;
transform-origin: 0
}
.mfp-arrow-right {
-webkit-transform-origin: 100%;
transform-origin: 100%
}
.mfp-container {
padding-left: 6px;
padding-right: 6px
}
}
.mfp-ie7 .mfp-img {
padding: 0
}
.mfp-ie7 .mfp-bottom-bar {
width: 600px;
left: 50%;
margin-left: -300px;
margin-top: 5px;
padding-bottom: 5px
}
.mfp-ie7 .mfp-container {
padding: 0
}
.mfp-ie7 .mfp-content {
padding-top: 44px
}
.mfp-ie7 .mfp-close {
top: 0;
right: 0;
padding-top: 0
}
a:focus,button:focus {
outline: thin dotted #f89406;
outline: 5px auto #f89406;
outline-offset: -2px
}
* {
box-sizing: border-box
}
html {
box-sizing: border-box;
background-color: #fff;
font-size: 16px;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%
}
@media (min-width: 48em) {
html {
font-size: 18px
}
}
@media (min-width: 64em) {
html {
font-size: 20px
}
}
@media (min-width: 80em) {
html {
font-size: 22px
}
}
body {
margin: 0
}
::-moz-selection {
color: #fff;
background: #000
}
::selection {
color: #fff;
background: #000
}
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section {
display: block
}
audio,canvas,video {
display: inline-block;
*display: inline;
*zoom: 1
}
audio:not([controls]) {
display: none
}
a {
color: #52adc8
}
a:hover,a:active {
outline: 0
}
sub,sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline
}
sup {
top: -0.5em
}
sub {
bottom: -0.25em
}
img {
max-width: 100%;
width: auto\9;
height: auto;
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic
}
#map_canvas img,.google-maps img {
max-width: none
}
button,input,select,textarea {
margin: 0;
font-size: 100%;
vertical-align: middle
}
button,input {
*overflow: visible;
line-height: normal
}
button::-moz-focus-inner,input::-moz-focus-inner {
padding: 0;
border: 0
}
button,html input[type="button"],input[type="reset"],input[type="submit"] {
-webkit-appearance: button;
cursor: pointer
}
label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"] {
cursor: pointer
}
input[type="search"] {
box-sizing: border-box;
-webkit-appearance: textfield
}
input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: none
}
textarea {
overflow: auto;
vertical-align: top
}
html {
position: relative;
min-height: 100%
}
body {
margin: 0;
padding: 0;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
line-height: 1.5
}
body.overflow--hidden {
overflow: hidden
}
h1,h2,h3,h4,h5,h6 {
margin: 2em 0 0.5em;
line-height: 1.2;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-weight: bold
}
h1 {
margin-top: 0;
font-size: 1.563em
}
h2 {
font-size: 1.25em
}
h3 {
font-size: 1em
}
h4 {
font-size: .75em
}
h5 {
font-size: .75em
}
h6 {
font-size: .75em
}
small,.small {
font-size: .75em
}
p {
margin-bottom: 1.3em
}
u,ins {
text-decoration: none;
border-bottom: 1px solid #494e52
}
u a,ins a {
color: inherit
}
del a {
color: inherit
}
p,pre,blockquote,ul,ol,dl,figure,table,fieldset {
orphans: 3;
widows: 3
}
abbr[title],abbr[data-original-title] {
text-decoration: none;
cursor: help;
border-bottom: 1px dotted #494e52
}
blockquote {
margin: 2em 1em 2em 0;
padding-left: 1em;
padding-right: 1em;
font-style: italic;
border-left: 0.25em solid #7a8288
}
blockquote cite {
font-style: italic
}
blockquote cite:before {
content: "\2014";
padding-right: 5px
}
a:hover,a:active {
color: #3e8296;
outline: 0
}
a:visited {
color: #7dc2d6
}
tt,code,kbd,samp,pre {
font-family: Monaco,Consolas,"Lucida Console",monospace
}
pre {
overflow-x: auto
}
p>code,a>code,li>code,figcaption>code,td>code {
padding-top: 0.1rem;
padding-bottom: 0.1rem;
font-size: .75em;
background: #fafafa;
border-radius: 4px
}
p>code:before,p>code:after,a>code:before,a>code:after,li>code:before,li>code:after,figcaption>code:before,figcaption>code:after,td>code:before,td>code:after {
letter-spacing: -0.2em;
content: "\00a0"
}
hr {
display: block;
margin: 1em 0;
border: 0;
border-top: 1px solid #f2f3f3
}
ul li,ol li {
margin-bottom: 0.5em
}
li ul,li ol {
margin-top: 0.5em
}
figure {
display: -webkit-box;
display: flex;
-webkit-box-pack: justify;
justify-content: space-between;
-webkit-box-align: start;
align-items: flex-start;
flex-wrap: wrap;
margin: 2em 0
}
figure img,figure iframe,figure .fluid-width-video-wrapper {
margin-bottom: 1em
}
figure img {
width: 100%;
border-radius: 4px;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out
}
figure>a {
display: block
}
@media (min-width: 37.5em) {
figure.half>a,figure.half>img {
width: calc(50% - 0.5em)
}
}
figure.half figcaption {
width: 100%
}
@media (min-width: 37.5em) {
figure.third>a,figure.third>img {
width: calc(33.3333% - 0.5em)
}
}
figure.third figcaption {
width: 100%
}
figcaption {
margin-bottom: 0.5em;
color: #898c8f;
font-family: Georgia,Times,serif;
font-size: .75em
}
figcaption a {
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out
}
figcaption a:hover {
color: #3e8296
}
svg:not(:root) {
overflow: hidden
}
nav ul {
margin: 0;
padding: 0
}
nav li {
list-style: none
}
nav a {
text-decoration: none
}
nav ul li,nav ol li {
margin-bottom: 0
}
nav li ul,nav li ol {
margin-top: 0
}
b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,#goog-wm-sb,.highlight,.archive__item-teaser {
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out
}
form {
margin: 0 0 5px 0;
padding: 1em;
background-color: #f2f3f3
}
form fieldset {
margin-bottom: 5px;
padding: 0;
border-width: 0
}
form legend {
display: block;
width: 100%;
margin-bottom: 10px;
*margin-left: -7px;
padding: 0;
color: #494e52;
border: 0;
white-space: normal
}
form p {
margin-bottom: 5px / 2
}
form ul {
list-style-type: none;
margin: 0 0 5px 0;
padding: 0
}
form br {
display: none
}
label,input,button,select,textarea {
vertical-align: baseline;
*vertical-align: middle
}
input,button,select,textarea {
box-sizing: border-box;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif
}
label {
display: block;
margin-bottom: 0.25em;
color: #494e52;
cursor: pointer
}
label small {
font-size: .75em
}
label input,label textarea,label select {
display: block
}
input,textarea,select {
display: inline-block;
width: 100%;
padding: 0.25em;
margin-bottom: 0.5em;
color: #494e52;
background-color: #fff;
border: #f2f3f3;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(0,0,0,0.125)
}
.input-mini {
width: 60px
}
.input-small {
width: 90px
}
input[type="image"],input[type="checkbox"],input[type="radio"] {
width: auto;
height: auto;
padding: 0;
margin: 3px 0;
*margin-top: 0;
line-height: normal;
cursor: pointer;
border-radius: 0;
border: 0 \9
}
input[type="checkbox"],input[type="radio"] {
box-sizing: border-box;
padding: 0;
*width: 13px;
*height: 13px
}
input[type="image"] {
border: 0;
box-shadow: none
}
input[type="file"] {
width: auto;
padding: initial;
line-height: initial;
border: initial;
background-color: transparent;
background-color: initial;
box-shadow: none
}
input[type="button"],input[type="reset"],input[type="submit"] {
width: auto;
height: auto;
cursor: pointer;
*overflow: visible
}
select,input[type="file"] {
*margin-top: 4px
}
select {
width: auto;
background-color: #fff
}
select[multiple],select[size] {
height: auto
}
textarea {
resize: vertical;
height: auto;
overflow: auto;
vertical-align: top
}
input[type="hidden"] {
display: none
}
.form {
position: relative
}
.radio,.checkbox {
padding-left: 18px;
font-weight: normal
}
.radio input[type="radio"],.checkbox input[type="checkbox"] {
float: left;
margin-left: -18px
}
.radio.inline,.checkbox.inline {
display: inline-block;
padding-top: 5px;
margin-bottom: 0;
vertical-align: middle
}
.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline {
margin-left: 10px
}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly] {
opacity: 0.5;
cursor: not-allowed
}
input:focus,textarea:focus {
border-color: #7a8288;
outline: 0;
outline: thin dotted \9;
box-shadow: inset 0 1px 3px rgba(73,78,82,0.06),0 0 5px rgba(122,130,136,0.7)
}
input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus {
box-shadow: none
}
.help-block,.help-inline {
color: #898c8f
}
.help-block {
display: block;
margin-bottom: 1em;
line-height: 1em
}
.help-inline {
display: inline-block;
vertical-align: middle;
padding-left: 5px
}
.form-group {
margin-bottom: 5px;
padding: 0;
border-width: 0
}
.form-inline input,.form-inline textarea,.form-inline select {
display: inline-block;
margin-bottom: 0
}
.form-inline label {
display: inline-block
}
.form-inline .radio,.form-inline .checkbox,.form-inline .radio {
padding-left: 0;
margin-bottom: 0;
vertical-align: middle
}
.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"] {
float: left;
margin-left: 0;
margin-right: 3px
}
.form-search input,.form-search textarea,.form-search select {
display: inline-block;
margin-bottom: 0
}
.form-search .search-query {
padding-left: 14px;
padding-right: 14px;
margin-bottom: 0;
border-radius: 14px
}
.form-search label {
display: inline-block
}
.form-search .radio,.form-search .checkbox,.form-inline .radio {
padding-left: 0;
margin-bottom: 0;
vertical-align: middle
}
.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"] {
float: left;
margin-left: 0;
margin-right: 3px
}
.form--loading:before {
content: ""
}
.form--loading .form__spinner {
display: block
}
.form:before {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255,255,255,0.7);
z-index: 10
}
.form__spinner {
display: none;
position: absolute;
top: 50%;
left: 50%;
z-index: 11
}
#goog-fixurl ul {
list-style: none;
margin-left: 0;
padding-left: 0
}
#goog-fixurl ul li {
list-style-type: none
}
#goog-wm-qt {
width: auto;
margin-right: 10px;
margin-bottom: 20px;
padding: 8px 20px;
display: inline-block;
font-size: .75em;
background-color: #fff;
color: #000;
border-width: 2px !important;
border-style: solid !important;
border-color: #f2f3f3;
border-radius: 4px
}
table {
margin-bottom: 1em;
width: 100%;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em;
border-collapse: collapse
}
table+table {
margin-top: 1em
}
thead {
background-color: #f2f3f3;
border-bottom: 2px solid #b6b6b6
}
th {
padding: 0.5em;
font-weight: bold;
text-align: left
}
td {
padding: 0.5em;
border-bottom: 1px solid #b6b6b6
}
tr,td,th {
vertical-align: middle
}
@-webkit-keyframes intro {
0% {
opacity: 0
}
100% {
opacity: 1
}
}
@keyframes intro {
0% {
opacity: 0
}
100% {
opacity: 1
}
}
.btn,#goog-wm-sb {
display: inline-block;
margin-bottom: 0.25em;
padding: 0.5em 1em;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em;
font-weight: bold;
text-align: center;
text-decoration: none;
border-width: 0;
border-radius: 4px;
cursor: pointer
}
.btn .icon,#goog-wm-sb .icon {
margin-right: 0.5em
}
.btn .icon+.hidden,#goog-wm-sb .icon+.hidden {
margin-left: -0.5em
}
.btn--primary {
background-color: #7a8288;
color: #fff
}
.btn--primary:hover {
background-color: #62686d;
color: #fff
}
.btn--primary:visited {
background-color: #7a8288;
color: #fff
}
.btn--inverse {
background-color: #fff;
color: #494e52;
border: 1px solid #f2f3f3
}
.btn--inverse:hover {
background-color: #ccc;
color: #494e52
}
.btn--inverse:visited {
background-color: #fff;
color: #494e52
}
.btn--light-outline {
background-color: transparent;
color: #fff;
border: 1px solid #fff
}
.btn--light-outline:hover {
background-color: rgba(0,0,0,0.2);
color: #fff
}
.btn--light-outline:visited {
background-color: transparent;
color: #fff
}
.btn--success {
background-color: #62c462;
color: #fff
}
.btn--success:hover {
background-color: #4e9d4e;
color: #fff
}
.btn--success:visited {
background-color: #62c462;
color: #fff
}
.btn--warning {
background-color: #f89406;
color: #fff
}
.btn--warning:hover {
background-color: #c67605;
color: #fff
}
.btn--warning:visited {
background-color: #f89406;
color: #fff
}
.btn--danger {
background-color: #ee5f5b;
color: #fff
}
.btn--danger:hover {
background-color: #be4c49;
color: #fff
}
.btn--danger:visited {
background-color: #ee5f5b;
color: #fff
}
.btn--info {
background-color: #52adc8;
color: #fff
}
.btn--info:hover {
background-color: #428aa0;
color: #fff
}
.btn--info:visited {
background-color: #52adc8;
color: #fff
}
.btn--facebook {
background-color: #3b5998;
color: #fff
}
.btn--facebook:hover {
background-color: #2f477a;
color: #fff
}
.btn--facebook:visited {
background-color: #3b5998;
color: #fff
}
.btn--twitter {
background-color: #55acee;
color: #fff
}
.btn--twitter:hover {
background-color: #448abe;
color: #fff
}
.btn--twitter:visited {
background-color: #55acee;
color: #fff
}
.btn--google-plus {
background-color: #dd4b39;
color: #fff
}
.btn--google-plus:hover {
background-color: #b13c2e;
color: #fff
}
.btn--google-plus:visited {
background-color: #dd4b39;
color: #fff
}
.btn--linkedin {
background-color: #007bb6;
color: #fff
}
.btn--linkedin:hover {
background-color: #006292;
color: #fff
}
.btn--linkedin:visited {
background-color: #007bb6;
color: #fff
}
.btn--block {
display: block;
width: 100%
}
.btn--block+.btn--block {
margin-top: 0.25em
}
.btn--disabled {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
box-shadow: none;
opacity: 0.65
}
.btn--x-large {
font-size: 1.25em
}
.btn--large {
font-size: 1em
}
.btn--small {
font-size: .6875em
}
.notice {
margin: 2em 0 !important;
padding: 1em;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em !important;
text-indent: initial;
background-color: #f8f9f9;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(189,193,196,0.25)
}
.notice h4 {
margin-top: 0 !important;
margin-bottom: 0.75em
}
.page__content .notice h4 {
margin-bottom: 0;
font-size: 1em
}
.notice p:last-child {
margin-bottom: 0 !important
}
.notice h4+p {
margin-top: 0;
padding-top: 0
}
.notice a {
color: #bdc1c4
}
.notice a:hover {
color: #717476
}
.notice code {
background-color: #fcfcfc
}
.notice ul:last-child {
margin-bottom: 0
}
.notice--primary {
margin: 2em 0 !important;
padding: 1em;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em !important;
text-indent: initial;
background-color: #f2f3f3;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(122,130,136,0.25)
}
.notice--primary h4 {
margin-top: 0 !important;
margin-bottom: 0.75em
}
.page__content .notice--primary h4 {
margin-bottom: 0;
font-size: 1em
}
.notice--primary p:last-child {
margin-bottom: 0 !important
}
.notice--primary h4+p {
margin-top: 0;
padding-top: 0
}
.notice--primary a {
color: #7a8288
}
.notice--primary a:hover {
color: #494e52
}
.notice--primary code {
background-color: #f8f9f9
}
.notice--primary ul:last-child {
margin-bottom: 0
}
.notice--info {
margin: 2em 0 !important;
padding: 1em;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em !important;
text-indent: initial;
background-color: #eef7fa;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(82,173,200,0.25)
}
.notice--info h4 {
margin-top: 0 !important;
margin-bottom: 0.75em
}
.page__content .notice--info h4 {
margin-bottom: 0;
font-size: 1em
}
.notice--info p:last-child {
margin-bottom: 0 !important
}
.notice--info h4+p {
margin-top: 0;
padding-top: 0
}
.notice--info a {
color: #52adc8
}
.notice--info a:hover {
color: #316878
}
.notice--info code {
background-color: #f6fbfc
}
.notice--info ul:last-child {
margin-bottom: 0
}
.notice--warning {
margin: 2em 0 !important;
padding: 1em;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em !important;
text-indent: initial;
background-color: #fef4e6;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(248,148,6,0.25)
}
.notice--warning h4 {
margin-top: 0 !important;
margin-bottom: 0.75em
}
.page__content .notice--warning h4 {
margin-bottom: 0;
font-size: 1em
}
.notice--warning p:last-child {
margin-bottom: 0 !important
}
.notice--warning h4+p {
margin-top: 0;
padding-top: 0
}
.notice--warning a {
color: #f89406
}
.notice--warning a:hover {
color: #955904
}
.notice--warning code {
background-color: #fffaf3
}
.notice--warning ul:last-child {
margin-bottom: 0
}
.notice--success {
margin: 2em 0 !important;
padding: 1em;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em !important;
text-indent: initial;
background-color: #eff9ef;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(98,196,98,0.25)
}
.notice--success h4 {
margin-top: 0 !important;
margin-bottom: 0.75em
}
.page__content .notice--success h4 {
margin-bottom: 0;
font-size: 1em
}
.notice--success p:last-child {
margin-bottom: 0 !important
}
.notice--success h4+p {
margin-top: 0;
padding-top: 0
}
.notice--success a {
color: #62c462
}
.notice--success a:hover {
color: #3b763b
}
.notice--success code {
background-color: #f7fcf7
}
.notice--success ul:last-child {
margin-bottom: 0
}
.notice--danger {
margin: 2em 0 !important;
padding: 1em;
color: #494e52;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em !important;
text-indent: initial;
background-color: #fdefef;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(238,95,91,0.25)
}
.notice--danger h4 {
margin-top: 0 !important;
margin-bottom: 0.75em
}
.page__content .notice--danger h4 {
margin-bottom: 0;
font-size: 1em
}
.notice--danger p:last-child {
margin-bottom: 0 !important
}
.notice--danger h4+p {
margin-top: 0;
padding-top: 0
}
.notice--danger a {
color: #ee5f5b
}
.notice--danger a:hover {
color: #8f3937
}
.notice--danger code {
background-color: #fef7f7
}
.notice--danger ul:last-child {
margin-bottom: 0
}
.masthead {
position: relative;
/* border-bottom: 1px solid #f2f3f3; */
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.15s;
animation-delay: 0.15s;
z-index: 20
}
.masthead__inner-wrap {
clear: both;
margin-left: auto;
margin-right: auto;
/* padding: 1em; */
padding: 20px;
max-width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif
}
.masthead__inner-wrap::after {
clear: both;
content: "";
display: table
}
@media (min-width: 80em) {
.masthead__inner-wrap {
max-width: 1280px
}
}
.masthead__inner-wrap nav {
z-index: 10
}
.masthead__inner-wrap a {
text-decoration: none
}
.site-title {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-item-align: center;
align-self: center;
font-weight: bold;
z-index: 20
}
.masthead__menu {
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both
}
.masthead__menu .site-nav {
margin-left: 0
}
@media (min-width: 37.5em) {
.masthead__menu .site-nav {
float: right
}
}
.masthead__menu ul {
margin: 0;
padding: 0;
clear: both;
list-style-type: none
}
.masthead__menu-item {
display: block;
list-style-type: none;
white-space: nowrap
}
.masthead__menu-item--lg {
padding-right: 2em;
font-weight: 700
}
.breadcrumbs {
clear: both;
margin: 0 auto;
max-width: 100%;
padding-left: 2em;
padding-right: 2em;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.3s;
animation-delay: 0.3s
}
.breadcrumbs::after {
clear: both;
content: "";
display: table
}
@media (min-width: 64em) {
.breadcrumbs {
padding-left: 1em;
padding-right: 1em
}
}
@media (min-width: 80em) {
.breadcrumbs {
max-width: 1280px
}
}
.breadcrumbs ol {
padding: 0;
list-style: none;
font-size: .75em
}
@media (min-width: 64em) {
.breadcrumbs ol {
float: right;
width: 83.0508474576%
}
}
@media (min-width: 80em) {
.breadcrumbs ol {
padding-left: 1.6949152542%
}
}
.breadcrumbs li {
display: inline
}
.breadcrumbs .current {
font-weight: bold
}
.pagination {
clear: both;
float: left;
margin-top: 1em;
padding-top: 1em;
width: 100%
}
.pagination::after {
clear: both;
content: "";
display: table
}
.pagination ul {
margin: 0;
padding: 0;
list-style-type: none;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif
}
.pagination li {
display: block;
float: left;
margin-left: -1px
}
.pagination li a {
display: block;
margin-bottom: 0.25em;
padding: 0.5em 1em;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: 14px;
font-weight: bold;
line-height: 1.5;
text-align: center;
text-decoration: none;
color: #898c8f;
border: 1px solid #b6b6b6;
border-radius: 0
}
.pagination li a:hover {
color: #3e8296
}
.pagination li a.current,.pagination li a.current.disabled {
color: #fff;
background: #7a8288
}
.pagination li a.disabled {
color: rgba(137,140,143,0.5);
pointer-events: none;
cursor: not-allowed
}
.pagination li:first-child {
margin-left: 0
}
.pagination li:first-child a {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px
}
.pagination li:last-child a {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px
}
.pagination--pager {
display: block;
padding: 1em 2em;
float: left;
width: 50%;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: 1em;
font-weight: bold;
text-align: center;
text-decoration: none;
color: #898c8f;
border: 1px solid #b6b6b6;
border-radius: 4px
}
.pagination--pager:hover {
background-color: #898c8f;
color: #fff
}
.pagination--pager:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0
}
.pagination--pager:last-child {
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0
}
.pagination--pager.disabled {
color: rgba(137,140,143,0.5);
pointer-events: none;
cursor: not-allowed
}
.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination {
margin-top: 2em;
padding-top: 2em;
border-top: 1px solid #f2f3f3
}
.greedy-nav {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
min-height: 2em;
background: #fff
}
.greedy-nav a {
display: block;
margin: 0 1rem;
color: #7a8288;
text-decoration: none
}
.greedy-nav a:hover {
color: #5c6266
}
.greedy-nav a.site-title {
margin-left: 0
}
.greedy-nav__toggle {
-ms-flex-item-align: center;
align-self: center;
height: 2rem;
border: 0;
outline: none;
color: #fff;
background-color: #7a8288;
cursor: pointer
}
.greedy-nav .visible-links {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
overflow: hidden
}
.greedy-nav .visible-links li {
-webkit-box-flex: 0;
-ms-flex: none;
flex: none
}
.greedy-nav .visible-links a {
position: relative
}
.greedy-nav .visible-links a:before {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 4px;
background: #7a8288;
width: 100%;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
-webkit-transform: scaleX(0) translate3d(0, 0, 0);
transform: scaleX(0) translate3d(0, 0, 0)
}
.greedy-nav .visible-links a:hover:before {
-webkit-transform: scaleX(1);
-ms-transform: scaleX(1);
transform: scaleX(1)
}
.greedy-nav .hidden-links {
position: absolute;
top: 100%;
right: 0;
margin-top: 15px;
padding: 5px;
border: 1px solid #f2f3f3;
border-radius: 4px;
background: #fff;
-webkit-box-shadow: 0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)
}
.greedy-nav .hidden-links.hidden {
display: none
}
.greedy-nav .hidden-links a {
margin: 0;
padding: 10px 20px;
font-size: 1em
}
.greedy-nav .hidden-links a:hover {
color: #5c6266;
background: #dee0e1
}
.greedy-nav .hidden-links:before {
content: "";
position: absolute;
top: -11px;
right: 10px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #f2f3f3 transparent;
display: block;
z-index: 0
}
.greedy-nav .hidden-links:after {
content: "";
position: absolute;
top: -10px;
right: 10px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #fff transparent;
display: block;
z-index: 1
}
.greedy-nav .hidden-links li {
display: block;
border-bottom: 1px solid #f2f3f3
}
.greedy-nav .hidden-links li:last-child {
border-bottom: none
}
.no-js .greedy-nav .visible-links {
-ms-flex-wrap: wrap;
flex-wrap: wrap;
overflow: visible
}
.nav__list {
margin-bottom: 1.5em
}
.nav__list input[type="checkbox"],.nav__list label {
display: none
}
@media (min-width: max-width(1023px)) {
.nav__list label {
position: relative;
display: inline-block;
padding: 0.5em 2.5em 0.5em 1em;
color: #7a8288;
font-size: .75em;
font-weight: bold;
border: 1px solid #bdc1c4;
border-radius: 4px;
z-index: 20;
-webkit-transition: 0.2s ease-out;
transition: 0.2s ease-out;
cursor: pointer
}
.nav__list label:before,.nav__list label:after {
content: "";
position: absolute;
right: 1em;
top: 1.25em;
width: 0.75em;
height: 0.125em;
line-height: 1;
background-color: #7a8288;
-webkit-transition: 0.2s ease-out;
transition: 0.2s ease-out
}
.nav__list label:after {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg)
}
.nav__list label:hover {
color: #fff;
border-color: #7a8288;
background-color: #333
}
.nav__list label:hover:before,.nav__list label:hover:after {
background-color: #fff
}
.nav__list input:checked+label {
color: white;
background-color: #333
}
.nav__list input:checked+label:before,.nav__list input:checked+label:after {
background-color: #fff
}
.nav__list label:hover:after {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg)
}
.nav__list input:checked+label:hover:after {
-webkit-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0)
}
.nav__list ul {
margin-bottom: 1em
}
.nav__list a {
display: block;
padding: 0.25em 0
}
}
@media (min-width: max-width(1023px)) and (min-width: 64em) {
.nav__list a {
padding-top: 0.125em;
padding-bottom: 0.125em
}
}
@media (min-width: max-width(1023px)) {
.nav__list a:hover {
text-decoration: underline
}
}
.nav__list .nav__items {
margin: 0;
font-size: 1.25rem
}
.nav__list .nav__items a {
color: inherit
}
.nav__list .nav__items .active {
margin-left: -0.5em;
padding-left: 0.5em;
padding-right: 0.5em;
font-weight: bold
}
@media (min-width: max-width(1023px)) {
.nav__list .nav__items {
position: relative;
max-height: 0;
opacity: 0%;
overflow: hidden;
z-index: 10;
-webkit-transition: 0.3s ease-in-out;
transition: 0.3s ease-in-out;
-webkit-transform: translate(0, 10%);
-ms-transform: translate(0, 10%);
transform: translate(0, 10%)
}
}
@media (min-width: max-width(1023px)) {
.nav__list input:checked ~ .nav__items {
-webkit-transition: 0.5s ease-in-out;
transition: 0.5s ease-in-out;
max-height: 9999px;
overflow: visible;
opacity: 1;
margin-top: 1em;
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0)
}
}
.nav__title {
margin: 0;
padding: 0.25rem 0.75rem;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: 1em;
font-weight: bold
}
.nav__sub-title {
display: block;
margin: 0.5rem 0;
padding: 0.25rem 0;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em;
font-weight: bold;
text-transform: uppercase;
border-bottom: 1px solid #f2f3f3
}
.toc {
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
color: #7a8288;
background-color: #fff;
border: 1px solid #f2f3f3;
border-radius: 4px;
-webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.125);
box-shadow: 0 1px 1px rgba(0,0,0,0.125)
}
.toc .nav__title {
color: #fff;
font-size: .75em;
background: #7a8288;
border-top-left-radius: 4px;
border-top-right-radius: 4px
}
.toc__menu {
margin: 0;
padding: 0;
width: 100%;
list-style: none;
font-size: .75em
}
@media (min-width: 64em) {
.toc__menu {
font-size: .6875em
}
}
.toc__menu a {
display: block;
padding: 0.25rem 0.75rem;
color: #898c8f;
font-weight: bold;
line-height: 1.5;
border-bottom: 1px solid #f2f3f3
}
.toc__menu a:hover {
color: #494e52
}
.toc__menu li ul>li a {
padding-left: 1.25rem;
font-weight: normal
}
.toc__menu li ul li ul>li a {
padding-left: 1.75rem
}
.toc__menu li ul li ul li ul>li a {
padding-left: 2.25rem
}
.toc__menu li ul li ul li ul li ul>li a {
padding-left: 2.75rem
}
.toc__menu li ul li ul li ul li ul li ul>li a {
padding-left: 3.25rem
}
.page__footer {
clear: both;
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
position: absolute;
bottom: 0;
height: auto;
margin-top: 3em;
color: #898c8f;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.45s;
animation-delay: 0.45s;
background-color: #f2f3f3
}
.page__footer::after {
clear: both;
content: "";
display: table
}
.page__footer footer {
clear: both;
margin-left: auto;
margin-right: auto;
margin-top: 2em;
max-width: 100%;
padding: 0 1em 2em
}
.page__footer footer::after {
clear: both;
content: "";
display: table
}
@media (min-width: 80em) {
.page__footer footer {
max-width: 1280px
}
}
.page__footer a {
color: inherit;
text-decoration: none
}
.page__footer a:hover {
text-decoration: underline
}
.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal {
color: #898c8f
}
.page__footer-copyright {
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .6875em
}
.page__footer-follow ul {
margin: 0;
padding: 0;
list-style-type: none
}
.page__footer-follow li {
display: inline-block;
padding-top: 5px;
padding-bottom: 5px;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em;
text-transform: uppercase
}
.page__footer-follow li+li:before {
content: "";
padding-right: 5px
}
.page__footer-follow a {
padding-right: 10px;
font-weight: bold
}
.page__footer-follow .social-icons a {
white-space: nowrap
}
.layout--search .archive__item-teaser {
margin-bottom: 0.25em
}
.search__toggle {
margin-left: 1rem;
margin-right: 1rem;
border: 0;
outline: none;
color: #898c8f;
background-color: transparent;
cursor: pointer;
-webkit-transition: 0.2s;
transition: 0.2s
}
.search__toggle:hover {
color: #494e52
}
.search-icon {
width: 100%;
height: 100%
}
.search-content {
display: none;
visibility: hidden;
padding-top: 1em;
padding-bottom: 1em
}
.search-content__inner-wrap {
width: 100%;
margin-left: auto;
margin-right: auto;
padding-left: 1em;
padding-right: 1em;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.15s;
animation-delay: 0.15s
}
@media (min-width: 80em) {
.search-content__inner-wrap {
max-width: 1280px
}
}
.search-content .search-input {
display: block;
margin-bottom: 0;
padding: 0;
border: none;
outline: none;
box-shadow: none;
background-color: transparent;
font-size: 1.563em
}
@media (min-width: 64em) {
.search-content .search-input {
font-size: 1.953em
}
}
@media (min-width: 80em) {
.search-content .search-input {
font-size: 2.441em
}
}
.search-content.is--visible {
display: block;
visibility: visible
}
.search-content.is--visible::after {
content: "";
display: block
}
.search-content .results__found {
margin-top: 0.5em;
font-size: .75em
}
.search-content .archive__item {
margin-bottom: 2em
}
@media (min-width: 64em) {
.search-content .archive__item {
width: 75%
}
}
@media (min-width: 80em) {
.search-content .archive__item {
width: 50%
}
}
.search-content .archive__item-title {
margin-top: 0
}
.search-content .archive__item-excerpt {
margin-bottom: 0
}
.ais-search-box {
max-width: 100% !important;
margin-bottom: 2em
}
.archive__item-title .ais-Highlight {
color: #52adc8;
font-style: normal;
text-decoration: underline
}
.archive__item-excerpt .ais-Highlight {
color: #52adc8;
font-style: normal;
font-weight: bold
}
div.highlighter-rouge,figure.highlight {
position: relative;
margin-bottom: 1em;
background: #263238;
color: #eff;
font-family: Monaco,Consolas,"Lucida Console",monospace;
font-size: .75em;
line-height: 1.8;
border-radius: 4px
}
div.highlighter-rouge>pre,div.highlighter-rouge pre.highlight,figure.highlight>pre,figure.highlight pre.highlight {
margin: 0;
padding: 1em
}
.highlight table {
margin-bottom: 0;
font-size: 1em;
border: 0
}
.highlight table td {
padding: 0;
width: calc(100% - 1em);
border: 0
}
.highlight table td.gutter,.highlight table td.rouge-gutter {
padding-right: 1em;
width: 1em;
color: #b2ccd6;
border-right: 1px solid #b2ccd6;
text-align: right
}
.highlight table td.code,.highlight table td.rouge-code {
padding-left: 1em
}
.highlight table pre {
margin: 0
}
.highlight pre {
width: 100%
}
.highlight .hll {
background-color: #eff
}
.highlight .c {
color: #b2ccd6
}
.highlight .err {
color: #f07178
}
.highlight .k {
color: #c792ea
}
.highlight .l {
color: #f78c6c
}
.highlight .n {
color: #eff
}
.highlight .o {
color: #89ddff
}
.highlight .p {
color: #eff
}
.highlight .cm {
color: #b2ccd6
}
.highlight .cp {
color: #b2ccd6
}
.highlight .c1 {
color: #b2ccd6
}
.highlight .cs {
color: #b2ccd6
}
.highlight .gd {
color: #f07178
}
.highlight .ge {
font-style: italic
}
.highlight .gh {
color: #eff;
font-weight: bold
}
.highlight .gi {
color: #c3e88d
}
.highlight .gp {
color: #b2ccd6;
font-weight: bold
}
.highlight .gs {
font-weight: bold
}
.highlight .gu {
color: #89ddff;
font-weight: bold
}
.highlight .kc {
color: #c792ea
}
.highlight .kd {
color: #c792ea
}
.highlight .kn {
color: #89ddff
}
.highlight .kp {
color: #c792ea
}
.highlight .kr {
color: #c792ea
}
.highlight .kt {
color: #ffcb6b
}
.highlight .ld {
color: #c3e88d
}
.highlight .m {
color: #f78c6c
}
.highlight .s {
color: #c3e88d
}
.highlight .na {
color: #82aaff
}
.highlight .nb {
color: #eff
}
.highlight .nc {
color: #ffcb6b
}
.highlight .no {
color: #f07178
}
.highlight .nd {
color: #89ddff
}
.highlight .ni {
color: #eff
}
.highlight .ne {
color: #f07178
}
.highlight .nf {
color: #82aaff
}
.highlight .nl {
color: #eff
}
.highlight .nn {
color: #ffcb6b
}
.highlight .nx {
color: #82aaff
}
.highlight .py {
color: #eff
}
.highlight .nt {
color: #89ddff
}
.highlight .nv {
color: #f07178
}
.highlight .ow {
color: #89ddff
}
.highlight .w {
color: #eff
}
.highlight .mf {
color: #f78c6c
}
.highlight .mh {
color: #f78c6c
}
.highlight .mi {
color: #f78c6c
}
.highlight .mo {
color: #f78c6c
}
.highlight .sb {
color: #c3e88d
}
.highlight .sc {
color: #eff
}
.highlight .sd {
color: #b2ccd6
}
.highlight .s2 {
color: #c3e88d
}
.highlight .se {
color: #f78c6c
}
.highlight .sh {
color: #c3e88d
}
.highlight .si {
color: #f78c6c
}
.highlight .sx {
color: #c3e88d
}
.highlight .sr {
color: #c3e88d
}
.highlight .s1 {
color: #c3e88d
}
.highlight .ss {
color: #c3e88d
}
.highlight .bp {
color: #eff
}
.highlight .vc {
color: #f07178
}
.highlight .vg {
color: #f07178
}
.highlight .vi {
color: #f07178
}
.highlight .il {
color: #f78c6c
}
.gist th,.gist td {
border-bottom: 0
}
.hidden,.is--hidden {
display: none;
visibility: hidden
}
.load {
display: none
}
.transparent {
opacity: 0
}
.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut {
position: absolute !important;
clip: rect(1px, 1px, 1px, 1px);
height: 1px !important;
width: 1px !important;
border: 0 !important;
overflow: hidden
}
body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button {
display: none !important
}
.screen-reader-text:focus,.screen-reader-shortcut:focus {
clip: auto !important;
height: auto !important;
width: auto !important;
display: block;
font-size: 1em;
font-weight: bold;
padding: 15px 23px 14px;
background: #fff;
z-index: 100000;
text-decoration: none;
box-shadow: 0 0 2px 2px rgba(0,0,0,0.6)
}
.skip-link {
position: fixed;
z-index: 20;
margin: 0;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
white-space: nowrap
}
.skip-link li {
height: 0;
width: 0;
list-style: none
}
.text-left {
text-align: left
}
.text-center {
text-align: center
}
.text-right {
text-align: right
}
.text-justify {
text-align: justify
}
.text-nowrap {
white-space: nowrap
}
.cf {
clear: both
}
.wrapper {
margin-left: auto;
margin-right: auto;
width: 100%
}
.align-left {
display: block;
margin-left: auto;
margin-right: auto
}
@media (min-width: 37.5em) {
.align-left {
float: left;
margin-right: 1em
}
}
.align-right {
display: block;
margin-left: auto;
margin-right: auto
}
@media (min-width: 37.5em) {
.align-right {
float: right;
margin-left: 1em
}
}
.align-center {
display: block;
margin-left: auto;
margin-right: auto
}
@media (min-width: 64em) {
.full {
margin-right: -20.3389830508% !important
}
}
.icon {
display: inline-block;
fill: currentColor;
width: 1em;
height: 1.1em;
line-height: 1;
position: relative;
top: -0.1em;
vertical-align: middle
}
.social-icons .fas,.social-icons .fab,.social-icons .far,.social-icons .fal {
color: #494e52
}
.social-icons .fa-behance,.social-icons .fa-behance-square {
color: #1769ff
}
.social-icons .fa-bitbucket {
color: #205081
}
.social-icons .fa-dribbble,.social-icons .fa-dribble-square {
color: #ea4c89
}
.social-icons .fa-facebook,.social-icons .fa-facebook-square,.social-icons .fa-facebook-f {
color: #3b5998
}
.social-icons .fa-flickr {
color: #ff0084
}
.social-icons .fa-foursquare {
color: #0072b1
}
.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square {
color: #171516
}
.social-icons .fa-gitlab {
color: #e24329
}
.social-icons .fa-google-plus,.social-icons .fa-google-plus-square,.social-icons .fa-google-plus-g {
color: #dd4b39
}
.social-icons .fa-instagram {
color: #517fa4
}
.social-icons .fa-lastfm,.social-icons .fa-lastfm-square {
color: #d51007
}
.social-icons .fa-linkedin,.social-icons .fa-linkedin-in {
color: #007bb6
}
.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square {
color: #cb2027
}
.social-icons .fa-rss,.social-icons .fa-rss-square {
color: #fa9b39
}
.social-icons .fa-soundcloud {
color: #f30
}
.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow {
color: #fe7a15
}
.social-icons .fa-tumblr,.social-icons .fa-tumblr-square {
color: #32506d
}
.social-icons .fa-twitter,.social-icons .fa-twitter-square {
color: #55acee
}
.social-icons .fa-vimeo,.social-icons .fa-vimeo-square,.social-icons .fa-vimeo-v {
color: #1ab7ea
}
.social-icons .fa-vine {
color: #00bf8f
}
.social-icons .fa-youtube {
color: #b00
}
.social-icons .fa-xing,.social-icons .fa-xing-square {
color: #006567
}
.navicon {
position: relative;
width: 1.5rem;
height: .25rem;
background: #fff;
margin: auto;
-webkit-transition: 0.3s;
transition: 0.3s
}
.navicon:before,.navicon:after {
content: "";
position: absolute;
left: 0;
width: 1.5rem;
height: .25rem;
background: #fff;
-webkit-transition: 0.3s;
transition: 0.3s
}
.navicon:before {
top: -.5rem
}
.navicon:after {
bottom: -.5rem
}
.close .navicon {
background: transparent
}
.close .navicon:before,.close .navicon:after {
-webkit-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
top: 0;
width: 1.5rem
}
.close .navicon:before {
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg)
}
.close .navicon:after {
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg)
}
@media (min-width: 64em) {
.sticky {
clear: both;
position: -webkit-sticky;
position: sticky;
top: 2em
}
.sticky::after {
clear: both;
content: "";
display: table
}
.sticky>* {
display: block
}
}
.well {
min-height: 20px;
padding: 19px;
margin-bottom: 20px;
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
border-radius: 4px;
box-shadow: inset 0 1px 1px rgba(0,0,0,0.05)
}
.show-modal {
overflow: hidden;
position: relative
}
.show-modal:before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999;
background-color: rgba(255,255,255,0.85)
}
.show-modal .modal {
display: block
}
.modal {
display: none;
position: fixed;
width: 300px;
top: 50%;
left: 50%;
margin-left: -150px;
margin-top: -150px;
min-height: 0;
z-index: 9999;
background: #fff;
border: 1px solid #f2f3f3;
border-radius: 4px;
box-shadow: 0 1px 1px rgba(0,0,0,0.125)
}
.modal__title {
margin: 0;
padding: 0.5em 1em
}
.modal__supporting-text {
padding: 0 1em 0.5em 1em
}
.modal__actions {
padding: 0.5em 1em;
border-top: 1px solid #f2f3f3
}
.footnote {
color: #9ba1a6;
text-decoration: none
}
.footnotes {
color: #9ba1a6
}
.footnotes ol,.footnotes li,.footnotes p {
margin-bottom: 0;
font-size: .75em
}
a.reversefootnote {
color: #7a8288;
text-decoration: none
}
a.reversefootnote:hover {
text-decoration: underline
}
.required {
color: #ee5f5b;
font-weight: bold
}
.gsc-control-cse table,.gsc-control-cse tr,.gsc-control-cse td {
border: 0
}
.responsive-video-container {
position: relative;
margin-bottom: 1em;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
max-width: 100%
}
.responsive-video-container iframe,.responsive-video-container object,.responsive-video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%
}
:-webkit-full-screen-ancestor .masthead,:-webkit-full-screen-ancestor .page__footer {
position: static
}
#main {
clear: both;
margin-left: auto;
margin-right: auto;
padding-left: 1em;
padding-right: 1em;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
max-width: 100%;
-webkit-animation-delay: 0.15s;
animation-delay: 0.15s
}
#main::after {
clear: both;
content: "";
display: table
}
@media (min-width: 80em) {
#main {
max-width: 1280px
}
}
@media (min-width: 64em) {
.page {
float: right;
width: calc(100% - 200px);
padding-right: 200px
}
}
@media (min-width: 80em) {
.page {
width: calc(100% - 300px);
padding-right: 300px
}
}
.page .page__inner-wrap {
float: left;
margin-top: 1em;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both
}
.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share {
position: relative;
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both
}
.page__title {
margin-top: 0;
line-height: 1
}
.page__title+.page__meta,.page__title+.comment__date {
margin-top: -0.5em
}
.page__lead {
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: 1.25em
}
.page__content h2 {
padding-bottom: 0.5em;
border-bottom: 1px solid #f2f3f3
}
.page__content p,.page__content li,.page__content dl {
font-size: 1em
}
.page__content p {
margin: 0 0 1.3em
}
.page__content a:not(.btn):not(#goog-wm-sb):hover {
text-decoration: underline
}
.page__content a:not(.btn):not(#goog-wm-sb):hover img {
box-shadow: 0 0 10px rgba(0,0,0,0.25)
}
.page__content dt {
margin-top: 1em;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-weight: bold
}
.page__content dd {
margin-left: 1em;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em
}
.page__content .small {
font-size: .75em
}
.page__content blockquote+.small {
margin-top: -1.5em;
padding-left: 1.25rem
}
.page__hero {
position: relative;
margin-bottom: 2em;
clear: both;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.25s;
animation-delay: 0.25s
}
.page__hero::after {
clear: both;
content: "";
display: table
}
.page__hero--overlay {
position: relative;
margin-bottom: 2em;
padding: 3em 0;
clear: both;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.25s;
animation-delay: 0.25s
}
.page__hero--overlay::after {
clear: both;
content: "";
display: table
}
.page__hero--overlay a {
color: transparent
}
.page__hero--overlay .wrapper {
padding-left: 1em;
padding-right: 1em
}
@media (min-width: 80em) {
.page__hero--overlay .wrapper {
max-width: 1280px
}
}
.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb {
color: #fff;
text-shadow: 1px 1px 4px rgba(0,0,0,0.5)
}
.page__hero--overlay .page__lead {
max-width: 768px
}
.page__hero--overlay .page__title {
font-size: 1.953em
}
@media (min-width: 37.5em) {
.page__hero--overlay .page__title {
font-size: 2.441em
}
}
.page__hero-image {
width: 100%;
height: auto;
-ms-interpolation-mode: bicubic
}
.page__hero-caption {
position: absolute;
bottom: 0;
right: 0;
margin: 0 auto;
padding: 2px 5px;
color: #fff;
font-family: Georgia,Times,serif;
font-size: .6875em;
background: #000;
text-align: right;
z-index: 5;
opacity: 0.5;
border-radius: 4px 0 0 0
}
@media (min-width: 64em) {
.page__hero-caption {
padding: 5px 10px
}
}
.page__hero-caption a {
color: #fff;
text-decoration: none
}
.page__share {
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid #f2f3f3
}
@media (max-width: 37.5em) {
.page__share .btn span,.page__share #goog-wm-sb span {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px
}
}
.page__share-title {
margin-bottom: 10px;
font-size: .75em;
text-transform: uppercase
}
.page__meta,.comment__date {
margin-top: 2em;
color: #898c8f;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em
}
.page__meta p,.comment__date p {
margin: 0
}
.page__meta a,.comment__date a {
color: inherit
}
.page__meta-title {
margin-bottom: 10px;
font-size: .75em;
text-transform: uppercase
}
.page__taxonomy .sep {
display: none
}
.page__taxonomy strong {
margin-right: 10px
}
.page__taxonomy-item {
display: inline-block;
margin-right: 5px;
margin-bottom: 8px;
padding: 5px 10px;
text-decoration: none;
border: 1px solid #b6b6b6;
border-radius: 4px
}
.page__taxonomy-item:hover {
text-decoration: none;
color: #3e8296
}
.taxonomy__section {
margin-bottom: 2em;
padding-bottom: 1em
}
.taxonomy__section:not(:last-child) {
border-bottom: solid 1px #f2f3f3
}
.taxonomy__section .archive__item-title {
margin-top: 0
}
.taxonomy__section .archive__subtitle {
clear: both;
border: 0
}
.taxonomy__section+.taxonomy__section {
margin-top: 2em
}
.taxonomy__title {
margin-bottom: 0.5em;
color: #e5e7e8
}
.taxonomy__count {
color: #cacdd0
}
.taxonomy__index {
display: grid;
grid-column-gap: 2em;
grid-template-columns: repeat(2, 1fr);
margin: 1.414em 0;
padding: 0;
font-size: 0.75em;
list-style: none
}
@media (min-width: 64em) {
.taxonomy__index {
grid-template-columns: repeat(3, 1fr)
}
}
.taxonomy__index a {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding: 0.25em 0;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
color: inherit;
text-decoration: none;
border-bottom: 1px solid #f2f3f3
}
.back-to-top {
display: block;
clear: both;
color: #cacdd0;
font-size: 0.6em;
text-transform: uppercase;
text-align: right;
text-decoration: none
}
.page__comments {
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both
}
.page__comments-title {
margin-top: 2rem;
margin-bottom: 10px;
padding-top: 2rem;
font-size: .75em;
border-top: 1px solid #f2f3f3;
text-transform: uppercase
}
.page__comments-form {
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out
}
.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
box-shadow: none;
opacity: 0.65
}
.comment {
clear: both;
margin: 1em 0
}
.comment::after {
clear: both;
content: "";
display: table
}
.comment:not(:last-child) {
border-bottom: 1px solid #f2f3f3
}
.comment__avatar-wrapper {
float: left;
width: 60px;
height: 60px
}
@media (min-width: 64em) {
.comment__avatar-wrapper {
width: 100px;
height: 100px
}
}
.comment__avatar {
width: 40px;
height: 40px;
border-radius: 50%
}
@media (min-width: 64em) {
.comment__avatar {
width: 80px;
height: 80px;
padding: 5px;
border: 1px solid #f2f3f3
}
}
.comment__content-wrapper {
float: right;
width: calc(100% - 60px)
}
@media (min-width: 64em) {
.comment__content-wrapper {
width: calc(100% - 100px)
}
}
.comment__author {
margin: 0
}
.comment__author a {
text-decoration: none
}
.comment__date {
margin: 0
}
.comment__date a {
text-decoration: none
}
.page__related {
clear: both;
float: left;
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid #f2f3f3
}
.page__related::after {
clear: both;
content: "";
display: table
}
@media (min-width: 64em) {
.page__related {
float: right;
width: calc(100% - 200px)
}
}
@media (min-width: 80em) {
.page__related {
width: calc(100% - 300px)
}
}
.page__related a {
color: inherit;
text-decoration: none
}
.page__related-title {
margin-bottom: 10px;
font-size: .75em;
text-transform: uppercase
}
@media (min-width: 64em) {
.wide .page {
padding-right: 0
}
}
@media (min-width: 80em) {
.wide .page {
padding-right: 0
}
}
@media (min-width: 64em) {
.wide .page__related {
padding-right: 0
}
}
@media (min-width: 80em) {
.wide .page__related {
padding-right: 0
}
}
.archive {
margin-top: 1em;
margin-bottom: 2em
}
@media (min-width: 64em) {
.archive {
float: right;
width: calc(100% - 200px);
padding-right: 200px
}
}
@media (min-width: 80em) {
.archive {
width: calc(100% - 300px);
padding-right: 300px
}
}
.archive__subtitle {
margin: 1.414em 0 0;
padding-bottom: 0.5em;
font-size: 1em;
color: #898c8f;
border-bottom: 1px solid #f2f3f3
}
.archive__subtitle+.list__item .archive__item-title {
margin-top: 0.5em
}
.archive__item-title {
margin-bottom: 0.25em;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
line-height: initial;
overflow: hidden;
text-overflow: ellipsis
}
.archive__item-title a+a {
opacity: 0.5
}
.page__content .archive__item-title {
margin-top: 1em;
border-bottom: none
}
.archive__item-excerpt {
margin-top: 0;
font-size: .75em
}
.archive__item-excerpt+p {
text-indent: 0
}
.archive__item-teaser {
position: relative;
border-radius: 4px;
overflow: hidden
}
.archive__item-teaser img {
width: 100%
}
.archive__item-caption {
position: absolute;
bottom: 0;
right: 0;
margin: 0 auto;
padding: 2px 5px;
color: #fff;
font-family: Georgia,Times,serif;
font-size: .625em;
background: #000;
text-align: right;
z-index: 5;
opacity: 0.5;
border-radius: 4px 0 0 0
}
@media (min-width: 64em) {
.archive__item-caption {
padding: 5px 10px
}
}
.archive__item-caption a {
color: #fff;
text-decoration: none
}
.list__item .page__meta,.list__item .comment__date {
margin: 0 0 4px;
font-size: 0.6em
}
@media (min-width: 64em) {
.archive .grid__wrapper {
margin-right: -200px
}
}
@media (min-width: 80em) {
.archive .grid__wrapper {
margin-right: -300px
}
}
.grid__item {
margin-bottom: 2em
}
@media (min-width: 37.5em) {
.grid__item {
float: left;
width: 48.9795918367%
}
.grid__item:nth-child(2n+1) {
clear: both;
margin-left: 0
}
.grid__item:nth-child(2n+2) {
clear: none;
margin-left: 2.0408163265%
}
}
@media (min-width: 48em) {
.grid__item {
margin-left: 0;
margin-right: 0;
width: 23.7288135593%
}
.grid__item:nth-child(2n+1) {
clear: none
}
.grid__item:nth-child(4n+1) {
clear: both
}
.grid__item:nth-child(4n+2) {
clear: none;
margin-left: 1.6949152542%
}
.grid__item:nth-child(4n+3) {
clear: none;
margin-left: 1.6949152542%
}
.grid__item:nth-child(4n+4) {
clear: none;
margin-left: 1.6949152542%
}
}
.grid__item .page__meta,.grid__item .comment__date {
margin: 0 0 4px;
font-size: 0.6em
}
.grid__item .archive__item-title {
margin-top: 0.5em;
font-size: 1em
}
.grid__item .archive__item-excerpt {
display: none
}
@media (min-width: 48em) {
.grid__item .archive__item-excerpt {
display: block;
font-size: .75em
}
}
@media (min-width: 37.5em) {
.grid__item .archive__item-teaser {
max-height: 200px
}
}
@media (min-width: 48em) {
.grid__item .archive__item-teaser {
max-height: 120px
}
}
.feature__wrapper {
clear: both;
margin-bottom: 2em;
border-bottom: 1px solid #f2f3f3
}
.feature__wrapper::after {
clear: both;
content: "";
display: table
}
.feature__wrapper .archive__item-title {
margin-bottom: 0
}
.feature__item {
margin-bottom: 2em;
font-size: 1.125em
}
@media (min-width: 37.5em) {
.feature__item {
float: left;
margin-bottom: 0;
width: 32.2033898305%
}
.feature__item:nth-child(3n+1) {
clear: both;
margin-left: 0
}
.feature__item:nth-child(3n+2) {
clear: none;
margin-left: 1.6949152542%
}
.feature__item:nth-child(3n+3) {
clear: none;
margin-left: 1.6949152542%
}
.feature__item .feature__item-teaser {
max-height: 200px;
overflow: hidden
}
}
.feature__item .archive__item-body {
padding-left: 1.6949152542%;
padding-right: 1.6949152542%
}
.feature__item--left {
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.125em
}
.feature__item--left .archive__item-teaser {
margin-bottom: 2em
}
@media (min-width: 37.5em) {
.feature__item--left .archive__item-teaser {
float: left;
width: 40.6779661017%
}
.feature__item--left .archive__item-body {
float: right;
padding-left: 1.6949152542%;
padding-right: 1.6949152542%;
width: 57.6271186441%
}
}
.feature__item--right {
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.125em
}
.feature__item--right .archive__item-teaser {
margin-bottom: 2em
}
@media (min-width: 37.5em) {
.feature__item--right {
text-align: right
}
.feature__item--right .archive__item-teaser {
float: right;
width: 40.6779661017%
}
.feature__item--right .archive__item-body {
float: left;
width: 57.6271186441%;
padding-left: 1.6949152542%;
padding-right: 1.6949152542%
}
}
.feature__item--center {
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.125em
}
.feature__item--center .archive__item-teaser {
margin-bottom: 2em
}
@media (min-width: 37.5em) {
.feature__item--center {
text-align: center
}
.feature__item--center .archive__item-teaser {
margin: 0 auto;
width: 40.6779661017%
}
.feature__item--center .archive__item-body {
margin: 0 auto;
width: 57.6271186441%
}
}
.archive .feature__wrapper .archive__item-title {
margin-top: 0.25em;
font-size: 1em
}
.archive .feature__item,.archive .feature__item--left,.archive .feature__item--center,.archive .feature__item--right {
font-size: 1em
}
@media (min-width: 64em) {
.wide .archive {
padding-right: 0
}
}
@media (min-width: 80em) {
.wide .archive {
padding-right: 0
}
}
.sidebar {
clear: both;
margin-bottom: 1em
}
.sidebar::after {
clear: both;
content: "";
display: table
}
@media (max-width: 64em) {
.sidebar {
position: relative;
z-index: 10;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0)
}
}
@media (min-width: 64em) {
.sidebar {
float: left;
width: calc(200px - 1em);
opacity: 0.75;
-webkit-transition: opacity 0.2s ease-in-out;
transition: opacity 0.2s ease-in-out
}
.sidebar:hover {
opacity: 1
}
.sidebar.sticky {
overflow-y: auto;
height: calc( 100vh - 90px - 2em )
}
}
@media (min-width: 80em) {
.sidebar {
width: calc(300px - 1em)
}
}
.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6 {
margin-bottom: 0;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif
}
.sidebar p,.sidebar li {
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: .75em;
line-height: 1.5
}
.sidebar img {
width: 100%
}
.sidebar__top {
position: fixed;
bottom: 1.5em;
right: 2em;
z-index: 10
}
.sidebar__right {
margin-bottom: 1em
}
@media (min-width: 64em) {
.sidebar__right {
position: absolute;
top: 0;
left: 0;
width: 200px;
margin-left: -200px;
padding-right: 1.5em;
z-index: 10
}
.sidebar__right.sticky {
clear: both;
position: -webkit-sticky;
position: sticky;
top: 2em;
float: left
}
.sidebar__right.sticky::after {
clear: both;
content: "";
display: table
}
}
@media (min-width: 80em) {
.sidebar__right {
width: 300px;
margin-left: -300px
}
}
@media (min-width: 64em) {
.splash .sidebar__right {
position: relative;
float: left;
margin-right: 0
}
}
@media (min-width: 80em) {
.splash .sidebar__right {
margin-right: 0
}
}
.author__avatar {
display: table-cell;
vertical-align: top;
width: 36px;
height: 36px
}
@media (min-width: 64em) {
.author__avatar {
display: block;
width: auto;
height: auto
}
}
.author__avatar img {
max-width: 110px;
border-radius: 50%
}
@media (min-width: 64em) {
.author__avatar img {
padding: 5px;
border: 1px solid #f2f3f3
}
}
.author__content {
display: table-cell;
vertical-align: top;
padding-left: 15px;
padding-right: 25px;
line-height: 1
}
@media (min-width: 64em) {
.author__content {
display: block;
width: 100%;
padding-left: 0;
padding-right: 0
}
}
.author__content a {
color: inherit;
text-decoration: none
}
.author__name {
margin: 0
}
@media (min-width: 64em) {
.author__name {
margin-top: 10px;
margin-bottom: 10px
}
}
.sidebar .author__name {
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
font-size: 1em
}
.author__bio {
margin: 0
}
@media (min-width: 64em) {
.author__bio {
margin-top: 10px;
margin-bottom: 20px
}
}
.author__urls-wrapper {
position: relative;
display: table-cell;
vertical-align: middle;
font-family: -apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;
z-index: 10;
position: relative;
cursor: pointer
}
.author__urls-wrapper li:last-child a {
margin-bottom: 0
}
@media (min-width: 64em) {
.author__urls-wrapper {
display: block
}
}
.author__urls-wrapper button {
margin-bottom: 0
}
@media (min-width: 64em) {
.author__urls-wrapper button {
display: none
}
}
.author__urls {
display: none;
position: absolute;
right: 0;
margin-top: 15px;
padding: 10px;
list-style-type: none;
border: 1px solid #f2f3f3;
border-radius: 4px;
background: #fff;
z-index: -1;
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
cursor: default
}
.author__urls.is--visible {
display: block
}
@media (min-width: 64em) {
.author__urls {
display: block;
position: relative;
margin: 0;
padding: 0;
border: 0;
background: transparent;
box-shadow: none
}
}
.author__urls:before {
display: block;
content: "";
position: absolute;
top: -11px;
left: calc(50% - 10px);
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #f2f3f3 transparent;
z-index: 0
}
@media (min-width: 64em) {
.author__urls:before {
display: none
}
}
.author__urls:after {
display: block;
content: "";
position: absolute;
top: -10px;
left: calc(50% - 10px);
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #fff transparent;
z-index: 1
}
@media (min-width: 64em) {
.author__urls:after {
display: none
}
}
.author__urls li {
white-space: nowrap
}
.author__urls a {
display: block;
margin-bottom: 5px;
padding-right: 5px;
padding-top: 2px;
padding-bottom: 2px;
color: inherit;
font-size: 1em;
text-decoration: none
}
.author__urls a:hover {
text-decoration: underline
}
@media print {
[ hidden] {
display: none
}
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box
}
html {
margin: 0;
padding: 0;
min-height: auto !important;
font-size: 16px
}
body {
margin: 0 auto;
background: #fff !important;
color: #000 !important;
font-size: 1rem;
line-height: 1.5;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility
}
h1,h2,h3,h4,h5,h6 {
color: #000;
line-height: 1.2;
margin-bottom: 0.75rem;
margin-top: 0
}
h1 {
font-size: 2.5rem
}
h2 {
font-size: 2rem
}
h3 {
font-size: 1.75rem
}
h4 {
font-size: 1.5rem
}
h5 {
font-size: 1.25rem
}
h6 {
font-size: 1rem
}
a,a:visited {
color: #000;
text-decoration: underline;
word-wrap: break-word
}
table {
border-collapse: collapse
}
thead {
display: table-header-group
}
table,th,td {
border-bottom: 1px solid #000
}
td,th {
padding: 8px 16px
}
img {
border: 0;
display: block;
max-width: 100% !important;
vertical-align: middle
}
hr {
border: 0;
border-bottom: 2px solid #bbb;
height: 0;
margin: 2.25rem 0;
padding: 0
}
dt {
font-weight: bold
}
dd {
margin: 0;
margin-bottom: 0.75rem
}
abbr[title],acronym[title] {
border: 0;
text-decoration: none
}
table,blockquote,pre,code,figure,li,hr,ul,ol,a,tr {
page-break-inside: avoid
}
h2,h3,h4,p,a {
orphans: 3;
widows: 3
}
h1,h2,h3,h4,h5,h6 {
page-break-after: avoid;
page-break-inside: avoid
}
h1+p,h2+p,h3+p {
page-break-before: avoid
}
img {
page-break-after: auto;
page-break-before: auto;
page-break-inside: avoid
}
pre {
white-space: pre-wrap !important;
word-wrap: break-word
}
a[href^='http://']:after,a[href^='https://']:after,a[href^='ftp://']:after {
content: " (" attr(href) ")";
font-size: 80%
}
abbr[title]:after,acronym[title]:after {
content: " (" attr(title) ")"
}
#main {
max-width: 100%
}
.page {
margin: 0;
padding: 0;
width: 100%
}
.page-break,.page-break-before {
page-break-before: always
}
.page-break-after {
page-break-after: always
}
.no-print {
display: none
}
a.no-reformat:after {
content: ''
}
abbr[title].no-reformat:after,acronym[title].no-reformat:after {
content: ''
}
.page__hero-caption {
color: #000 !important;
background: #fff !important;
opacity: 1
}
.page__hero-caption a {
color: #000 !important
}
.masthead,.toc,.page__share,.page__related,.pagination,.ads,.page__footer,.page__comments-form,.author__avatar,.author__content,.author__urls-wrapper,.nav__list,.sidebar,.adsbygoogle {
display: none !important;
height: 1px !important
}
}
.back-img {
background-image: url('../img/background.png');
}
.logo-img {
height: 60px;
}
.header-page {
width: 100%;
height: 100px;
z-index: 99;
}
.footer-page {
width: 100%;
height: 155px;
z-index: 99;
}
.index-prefix {
height: 22px;
margin-bottom: 5px;
}
.footer-prefix {
height: 16px;
margin-bottom: 5px;
}
.start-prefix {
height: 16px;
margin-bottom: 5px;
}
.sidebar__top {
width: 25px;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
aria-hidden="true"
data-prefix="fas"
data-icon="angle-double-up"
role="img"
viewBox="0 0 320 512"
data-fa-i2svg=""
version="1.1"
id="svg37712"
sodipodi:docname="angle-double-up.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs37716" />
<sodipodi:namedview
id="namedview37714"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.15036377"
inkscape:cx="-1300.1802"
inkscape:cy="691.65597"
inkscape:window-width="1336"
inkscape:window-height="983"
inkscape:window-x="-12"
inkscape:window-y="19"
inkscape:window-maximized="0"
inkscape:current-layer="svg37712" />
<path
fill="currentColor"
d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"
id="path37710"
style="fill:#3aa6e3;fill-opacity:1" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="139"
height="20"
version="1.1"
id="svg327"
sodipodi:docname="badge.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview329"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.4282031"
inkscape:cx="-138.28565"
inkscape:cy="40.960561"
inkscape:window-width="1336"
inkscape:window-height="1032"
inkscape:window-x="572"
inkscape:window-y="53"
inkscape:window-maximized="0"
inkscape:current-layer="svg327" />
<defs
id="defs301">
<linearGradient
id="a"
x1="0"
y1="0"
x2="0"
y2="1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(139 0 0 20 -0 0)">
<stop
offset="0"
stop-color="#bbbbbb"
stop-opacity="0.1"
id="stop296" />
<stop
offset="1"
stop-color="#000000"
stop-opacity="0.1"
id="stop298" />
</linearGradient>
</defs>
<path
fill="#555555"
stroke="none"
d="M 3 0 L 136 0 C 137.65686 0 139 1.3431457 139 3 L 139 17 C 139 18.656855 137.65686 20 136 20 L 3 20 C 1.3431457 20 0 18.656855 0 17 L 0 3 C -0 1.3431457 1.3431457 0 3 0 Z"
id="path303" />
<path
fill="#44cc11"
stroke="none"
d="M 89 0 L 136 0 C 137.65686 0 139 1.3431457 139 3 L 139 17 C 139 18.656855 137.65686 20 136 20 L 89 20 C 87.34315 20 86 18.656855 86 17 L 86 3 C 86 1.3431457 87.34315 0 89 0 Z"
id="path305" />
<path
fill="#44cc11"
stroke="none"
d="M 86 0 L 99 0 L 99 20 L 86 20 Z"
id="path307" />
<path
fill="url(#a)"
stroke="none"
d="M 3 0 L 136 0 C 137.65686 0 139 1.3431457 139 3 L 139 17 C 139 18.656855 137.65686 20 136 20 L 3 20 C 1.3431457 20 0 18.656855 0 17 L 0 3 C -0 1.3431457 1.3431457 0 3 0 Z"
id="path309" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="15.556589"
y="14.353703"
id="text1939"><tspan
sodipodi:role="line"
id="tspan1937"
x="15.556589"
y="14.353703"
style="font-size:12px;fill:#ffffff">功能完成度</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.957907"
x="96.581963"
y="15.043459"
id="text9755"
transform="scale(1.0439423,0.95790735)"><tspan
sodipodi:role="line"
id="tspan9753"
x="96.581963"
y="15.043459"
style="font-size:12px;fill:#ffffff;stroke-width:0.957907">90%</tspan></text>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
aria-hidden="true"
data-prefix="fas"
data-icon="download"
role="img"
viewBox="0 0 512 512"
data-fa-i2svg=""
version="1.1"
id="svg37582"
sodipodi:docname="download.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs37586" />
<sodipodi:namedview
id="namedview37584"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.30072754"
inkscape:cx="540.35623"
inkscape:cy="517.07934"
inkscape:window-width="1920"
inkscape:window-height="1010"
inkscape:window-x="-6"
inkscape:window-y="-6"
inkscape:window-maximized="1"
inkscape:current-layer="svg37582" />
<path
fill="currentColor"
d="M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"
id="path37580"
style="fill:#ffffff" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
aria-hidden="true"
data-prefix="fas"
data-icon="envelope"
role="img"
viewBox="0 0 512 512"
data-fa-i2svg=""
version="1.1"
id="svg37494"
sodipodi:docname="envelope.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs37498" />
<sodipodi:namedview
id="namedview37496"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.30072754"
inkscape:cx="693.3186"
inkscape:cy="706.61968"
inkscape:window-width="1920"
inkscape:window-height="1010"
inkscape:window-x="-6"
inkscape:window-y="-6"
inkscape:window-maximized="1"
inkscape:current-layer="svg37494" />
<path
fill="currentColor"
d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"
id="path37492"
style="fill:#ffffff" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
aria-hidden="true"
data-prefix="fas"
data-icon="rss-square"
role="img"
viewBox="0 0 448 512"
data-fa-i2svg=""
version="1.1"
id="svg37620"
sodipodi:docname="feed.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs37624" />
<sodipodi:namedview
id="namedview37622"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.30072754"
inkscape:cx="114.72178"
inkscape:cy="766.47452"
inkscape:window-width="1336"
inkscape:window-height="804"
inkscape:window-x="495"
inkscape:window-y="70"
inkscape:window-maximized="0"
inkscape:current-layer="svg37620" />
<path
fill="currentColor"
d="M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"
id="path37618"
style="fill:#ff9955" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
aria-hidden="true"
data-prefix="fas"
data-icon="file-alt"
role="img"
viewBox="0 0 384 512"
data-fa-i2svg=""
version="1.1"
id="svg43097"
sodipodi:docname="file-alt.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs43101" />
<sodipodi:namedview
id="namedview43099"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.30072754"
inkscape:cx="-108.07125"
inkscape:cy="593.56053"
inkscape:window-width="1920"
inkscape:window-height="1010"
inkscape:window-x="-6"
inkscape:window-y="-6"
inkscape:window-maximized="1"
inkscape:current-layer="svg43097" />
<path
fill="currentColor"
d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"
id="path43095"
style="fill:#ffffff" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
aria-hidden="true"
data-prefix="fab"
data-icon="github"
role="img"
viewBox="0 0 496 512"
data-fa-i2svg=""
version="1.1"
id="svg37532"
sodipodi:docname="github.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs37536" />
<sodipodi:namedview
id="namedview37534"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.30072754"
inkscape:cx="237.75674"
inkscape:cy="852.93152"
inkscape:window-width="1920"
inkscape:window-height="1010"
inkscape:window-x="-6"
inkscape:window-y="-6"
inkscape:window-maximized="1"
inkscape:current-layer="svg37532" />
<path
fill="currentColor"
d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"
id="path37530" />
</svg>
function scrollToTop(duration) {
const start = window.scrollY;
const startTime = 'now' in window.performance ? performance.now() : new Date().getTime();
const easeInOutQuad = (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
function scroll() {
const now = 'now' in window.performance ? performance.now() : new Date().getTime();
const time = Math.min(1, ((now - startTime) / duration));
const timeFunction = easeInOutQuad(time);
window.scrollTo(0, Math.ceil(timeFunction * (0 - start) + start));
if (window.scrollY !== 0) {
requestAnimationFrame(scroll);
}
}
requestAnimationFrame(scroll);
}
window.onload = function() {
document.getElementById("sidebar").onclick = function() {
scrollToTop(800);
}
};
\ No newline at end of file
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="./assets/css/main.css">
</head>
<body class="layout--splash">
<div class="page__footer">
<footer>
<div class="page__footer-follow">
<ul class="social-icons">
<li>
<a href="https://github.com/shufengdong/sparrowzz/" target="_blank">
<img src="./assets/img/github.svg" class="footer-prefix" /> GitHub
</a>
</li>
<li>
<a href="https://github.com/shufengdong/sparrowzz/" target="_blank">
<img src="./assets/img/feed.svg" class="footer-prefix" /> Feed
</a>
</li>
</ul>
</div>
<div class="page__footer-copyright">© 2024 Sparrowzz. Powered by
<a href="https://sgool.zju.edu.cn/zh-CN/" target="_blank">浙江大学智能电网运行与优化实验室</a></div>
</footer>
</div>
</body>
</html>
\ No newline at end of file
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="./assets/css/main.css">
</head>
<body class="layout--splash">
<div class="masthead">
<div class="masthead__inner-wrap">
<div class="masthead__menu">
<nav id="site-nav" class="greedy-nav">
<a class="site-title" href="#" onclick="reloadParent('../index.html')">
<img class="logo-img" src="./assets/img/sparrowzz.png">
</a>
<ul class="visible-links">
<li class="masthead__menu-item">
<a href="#" onclick="reloadParent('./start.html')">开始使用</a>
</li>
<li class="masthead__menu-item">
<a href="#" onclick="reloadParent('./about.html')">关于Sparrowzz</a>
</li>
<li class="masthead__menu-item">
<a href="#" onclick="reloadParent('./doc.html')">文档</a>
</li>
<li class="masthead__menu-item">
<a href="#" onclick="reloadParent('./references.html')">参考资料</a>
</li>
<li class="masthead__menu-item">
<a href="#" onclick="reloadParent('./contact.html')">联系我们</a>
</li>
</ul>
<button class="greedy-nav__toggle hidden" type="button" count="0">
<span class="visually-hidden">所有菜单</span>
<div class="navicon"></div>
</button>
<ul class="hidden-links hidden"></ul>
</nav>
</div>
</div>
</div>
</body>
</html>
<script>
function reloadParent(page) {
window.parent.location.href = page;
}
</script>
\ No newline at end of file
<html lang="en" class="js fontawesome-i2svg-active fontawesome-i2svg-complete">
<head>
<meta charset="utf-8">
<!-- begin _includes/seo.html -->
<title>Sparrowzz - Sparrowzz</title>
<meta name="description" content="低代码控制器">
<meta property="og:type" content="website">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Sparrowzz">
<meta property="og:title" content="低代码控制器">
<meta property="og:description" content="低代码控制器">
<!-- end _includes/seo.html -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- For all browsers -->
<link rel="stylesheet" href="./assets/css/main.css">
<script type="text/javascript" src="./assets/js/index.js"></script>
</head>
<body class="layout--splash">
<object data="./header.html" class="header-page"></object>
<div class="initial-content">
<div id="main" role="main">
<article class="page" itemscope="" itemtype="http://schema.org/CreativeWork">
<meta itemprop="headline" content="Getting Started">
<div class="page__inner-wrap">
<header>
<h1 id="page-title" class="page__title" itemprop="headline">开始使用
</h1>
</header>
<section class="page__content" itemprop="text">
<aside class="sidebar__right sticky">
<nav class="toc">
<header>
<h4 class="nav__title">
<img src="./assets/img/file-alt.svg" class="start-prefix" /><!-- <i class="fas fa-file-alt"></i> -->
<a href="#site-nav">开始使用</a>
</h4>
</header>
<ul class="toc__menu">
<li>
<a href="#installing-rust">安装Rust</a>
</li>
<li>
<a href="#install">安装Sparrowzz</a>
<ul>
<li>
<a href="#pip">xxx</a>
</li>
<li>
<a href="#nopip">xxx</a>
</li>
<li>
<a href="#develop">xxx</a>
</li>
</ul>
</li>
<li>
<a href="#test-your-installation-">测试安装结果 </a>
</li>
<li>
<a href="#a-short-introduction-">简单介绍 </a>
<ul>
<li>
<a href="#creating-a-network">创建一个实例</a>
</li>
<li>
<a href="#running-a-power-flow">运行实例</a>
</li>
</ul>
</li>
<li>
<a href="#interactive-tutorials-">运行结果查看 </a>
</li>
<li>
<a href="#youtube-tutorials-">教学视频 </a>
</li>
</ul>
</nav>
</aside>
<h2 id="installing-rust">安装Rust</h2>
<p>sparrowzz is tested with up-to-date Python version, as listed at <a href="https://pypi.org/project/sparrowzz/">pypi</a>. We recommend the <a href="https://www.anaconda.com/">Anaconda Distribution</a>, which provides a Python distribution that already includes a lot of modules for scientific computing that are needed. Simply <a href="https://www.anaconda.com/download">download</a> and install the newest version of Anaconda and you are all set to run sparrowzz.</p>
<p>Of course it is also possible to use sparrowzz with other distributions besides Anaconda. It is however important that the following packages are included:</p>
<ul>
<li>numpy</li>
<li>scipy</li>
<li>pandas</li>
<li>networkx</li>
<li>packaging</li>
<li>tqdm</li>
<li>deepdiff</li>
</ul>
<p>Since some of these packages depend on C-libraries, they cannot be easily installed through pip on Windows systems.
If you use a distribution that does not include one of these packages, you either have to build these libraries yourself or switch to a different distribution.</p>
<h2 id="install">Installing sparrowzz</h2>
<h3 id="pip">Through pip</h3>
<p>The easiest way to install sparrowzz is through pip:</p>
<ol>
<li>
<p>Open a command prompt (e.g. start–&gt;cmd on windows systems)</p>
</li>
<li>
<p>Install sparrowzz by running:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code> pip install sparrowzz[all]
</code></pre>
</div>
</div>
</li>
</ol>
<h3 id="nopip">Without internet connection</h3>
<p>If you don’t have internet access on your system, sparrowzz can also be installed from local files:</p>
<ol>
<li>Download and unzip the current sparrowzz distribution from <a href="https://pypi.org/project/sparrowzz/">PyPi</a> under “Download files”.</li>
<li>
<p>Open a command prompt (e.g. Start--&gt;cmd on Windows) and navigate to the folder that contains the sparrowzz code with the command cd
&lt;folder&gt; :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>cd %path_to_sparrowzz%\sparrowzz-x.x.x\
</code></pre>
</div>
</div>
</li>
<li>
<p>Install sparrowzz by running :</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>pip install -e .[all]
</code></pre>
</div>
</div>
</li>
</ol>
<p>The option “-e” means that pip will provide an editable environment. In other words, the changes in the files in the directory with sparrowzz code will be considered. In case this is not necessary, an installation without the option -e will install the files in the environment as a copy, and the downloaded folder can be safely removed.</p>
<p>The option “all” means that not only the strictly required dependencies are installed, but also all the optional packages. Other options are: “docs”, “plotting”, “test”, “performance” (includes ortools for faster state estimation, numba and lightsim2grid that substantially improve the performance of power flow calculations), “fileio”, “converter”, “pgm” (includes the interface to power-grid-model as a power flow calculation engine). Most users can use the version “all” unless there are resons to avoid certain depemdencies.</p>
<h3 id="develop">Development Version</h3>
<p>To install the latest development version of sparrowzz from <a href="https://github.com/e2nIEE/sparrowzz">github</a>, simply follow these steps:</p>
<ol>
<li>
<p>Download and install <a href="https://git-scm.com">git</a>.</p>
</li>
<li>
<p>Open a git shell and navigate to the directory where you want to keep your sparrowzz files.</p>
</li>
<li>
<p>Run the following git command:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code> git clone https://github.com/e2nIEE/sparrowzz.git
</code></pre>
</div>
</div>
</li>
<li>
<p>Navigate inside the repository and check out the develop branch:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code> cd sparrowzz
git checkout develop
</code></pre>
</div>
</div>
</li>
<li>
<p>Open a command prompt (cmd or anaconda command prompt) and navigate to the folder where the sparrowzz files are located. Run:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code> pip install -e .[all]
</code></pre>
</div>
</div>
<p>This registers your local sparrowzz installation with pip, the option -e ensures the edits in the files have a direct impact on the sparrowzz installation, and “all” installs all the optional dependencies.</p>
</li>
</ol>
<h2 id="test-your-installation-">Test your installation <a name="test"></a>
</h2>
<p>A first basic way to test your installation is to import all sparrowzz submodules to see if all dependencies are available:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>import sparrowzz
import sparrowzz.networks
import sparrowzz.topology
import sparrowzz.plotting
import sparrowzz.converter
import sparrowzz.estimation
</code></pre>
</div>
</div>
<p>If you want to be really sure that everything works fine, run the sparrowzz test suite:</p>
<ol>
<li>
<p>Install pytest if it is not yet installed on your system:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>pip install pytest
</code></pre>
</div>
</div>
</li>
<li>
<p>Run the sparrowzz test suite:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code> import sparrowzz.test
sparrowzz.test.run_all_tests()
</code></pre>
</div>
</div>
</li>
</ol>
<p>If everything is installed correctly, all tests should pass or xfail (expected to fail).</p>
<h2 id="a-short-introduction-">A short introduction <a name="intro"></a>
</h2>
<p>A network in sparrowzz is represented in a sparrowzzNet object, which
is a collection of pandas Dataframes. Each dataframe in a sparrowzzNet
contains the information about one sparrowzz element, such as line,
load transformer etc.</p>
<p>We consider the following simple 3-bus example network as a minimal
example:</p>
<p>
<img src="/images/getting_started/3bus-system.png" alt="">
</p>
<h3 id="creating-a-network">Creating a network</h3>
<p>The above network can be created in sparrowzz as follows:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>import sparrowzz as pp
# create empty net
net = pp.create_empty_network()
# create buses
b1 = pp.create_bus(net, vn_kv=20., name="Bus 1")
b2 = pp.create_bus(net, vn_kv=0.4, name="Bus 2")
b3 = pp.create_bus(net, vn_kv=0.4, name="Bus 3")
# create bus elements
pp.create_ext_grid(net, bus=b1, vm_pu=1.02, name="Grid Connection")
pp.create_load(net, bus=b3, p_mw=0.1, q_mvar=0.05, name="Load")
# create branch elements
pp.create_transformer(net, hv_bus=b1, lv_bus=b2, std_type="0.4 MVA 20/0.4 kV", name="Trafo")
pp.create_line(net, from_bus=b2, to_bus=b3, length_km=0.1, name="Line",std_type="NAYY 4x50 SE")
</code></pre>
</div>
</div>
<p>Note that you do not have to calculate any impedances or tap ratio for
the equivalent circuit, this is handled internally by sparrowzz
according to the sparrowzz <a href="http://sparrowzz.readthedocs.io/en/latest/elements/trafo.html#electric-model">transformer model</a>. The <a href="http://sparrowzz.readthedocs.io/en/latest/std_types.html">standard type
library</a> allows comfortable creation of line and transformer elements.</p>
<p>The sparrowzz representation now looks like this:</p>
<p>
<img src="/images/getting_started/sparrowzz_datastructure.png" alt="image">
</p>
<h3 id="running-a-power-flow">Running a Power Flow</h3>
<p>A powerflow can be carried out with the <a href="http://sparrowzz.readthedocs.io/en/latest/powerflow/ac.html">runpp function</a>:</p>
<div class="language-plaintext highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>pp.runpp(net)
</code></pre>
</div>
</div>
<p>When a power flow is run, sparrowzz combines the information of all
element tables into one pypower case file and uses pypower to run the
power flow. The results are then processed and written back into
sparrowzz:</p>
<p>
<img src="http://sparrowzz.readthedocs.io/en/latest/_images/sparrowzz_powerflow.png" alt="image">
</p>
<p>For the 3-bus example network, the result tables look like this:</p>
<p>
<img src="/images/getting_started/sparrowzz_results.png" alt="image">
</p>
<p>All other sparrowzz elements and network analysis functionality (e.g.
optimal power flow, state estimation or short-circuit calculation) is
also fully integrated into the tabular sparrowzz datastructure.</p>
<p>This minimal example is also available as a <a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/minimal_example.ipynb">jupyter notebook</a>.</p>
<h2 id="interactive-tutorials-">Interactive Tutorials <a name="tutorials"></a>
</h2>
<p>There are jupyter notebook tutorials on different functionalities of sparrowzz:</p>
<p>Basic introduction:</p>
<ul>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/minimal_example.ipynb">Minimal example</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/create_simple.ipynb">Creating a simple network</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/powerflow.ipynb">Running a power flow</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/create_advanced.ipynb">Creating an advanced network</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/std_types.ipynb">Working with the sparrowzz standard type library</a>
</li>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/hosting_capacity.ipynb">Application example: calculate hosting capacity with sparrowzz</a>
</li>
</ul>
<p>Data analysis and modelling error diagnostic:</p>
<ul>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/data_analysis.ipynb">Analysing data in sparrowzz tables</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/diagnostic.ipynb">Diagnosing inconsistent or incorrect data</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/internal_datastructure.ipynb">About the internal data structure of sparrowzz</a>
</li>
</ul>
<p>Optimal power flow:</p>
<ul>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/opf_basic.ipynb">Configuring and running an optimal power flow</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/opf_curtail.ipynb">Calculate power curtailment with an OPF</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/opf_dcline.ipynb">Calculate DC line dispatch with an OPF</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/opf_powermodels.ipynb">Using PowerModels.jl to carry out an OPF</a>
</li>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/tnep_powermodels.ipynb">Using PowerModels.jl TNEP (transmission network expansion planning) interface</a>
</li>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/ost_powermodels.ipynb">Using PowerModels.jl OTS (optimal transmission switching) interface</a>
</li>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/storage_powermodels.ipynb">Using PowerModels.jl storage interface</a>
</li>
</ul>
<p>State estimation:</p>
<ul>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/state_estimation.ipynb">Configure and run a state estimation</a>
</li>
</ul>
<p>Short-circuits:</p>
<ul>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/shortcircuit.ipynb">Run a short-circuit calculation according to IEC 60909</a>
</li>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/shortcircuit_renewables.ipynb">Short-circuit calculations considering renewable energy (2016 revision)</a>
</li>
</ul>
<p>Topology package:</p>
<ul>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/topology.ipynb">Running topological graph searches</a>
</li>
</ul>
<p>Plotting sparrowzz networks (static with matplotlib):</p>
<ul>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/plotting_basic.ipynb">Plotting geographic network plans</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/plotting_colormaps.ipynb">Plotting network plans with colormaps</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/plotting_structural.ipynb">Plotting structural plans without geographical data</a>
</li>
<li>
<a href="https://github.com/panda-power/sparrowzz/blob/master/tutorials/plotting_pyqt.ipynb">Embedding matplotlib colormaps in PyQt</a>
</li>
</ul>
<p>Plotting sparrowzz networks (interactive with plotly)</p>
<ul>
<li>
<a href="http://nbviewer.jupyter.org/github/e2nIEE/sparrowzz/blob/develop/tutorials/plotly_built-in.ipynb">Creating interactive plots with plotly</a>
</li>
<li>
<a href="http://nbviewer.jupyter.org/github/e2nIEE/sparrowzz/blob/develop/tutorials/plotly_traces.ipynb">Customize plotly plots</a>
</li>
<li>
<a href="http://nbviewer.jupyter.org/github/e2nIEE/sparrowzz/blob/develop/tutorials/plotly_maps.ipynb">Include interactive maps as background</a>
</li>
</ul>
<p>Time series calculation with the sparrowzz control module</p>
<ul>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/time_series.ipynb">Basic time series calculation</a>
</li>
<li>
<a href="https://github.com/e2nIEE/sparrowzz/blob/develop/tutorials/time_series_advanced_output.ipynb">Advanced time series calculation</a>
</li>
</ul>
<h2 id="youtube-tutorials-">YouTube Tutorials <a name="youtube_tutorials"></a>
</h2>
<p>You can also find some tutorials about the basics of sparrowzz on YouTube:</p>
<p>
<a href="https://www.youtube.com/channel/UC0iZbJpDu5--fa8A2GWCa0Q?view_as=subscriber">sparrowzz on YouTube</a>
</p>
</section>
<footer class="page__meta">
</footer>
</div>
</article>
</div>
</div>
<aside class="sidebar__top">
<a href="#" id="sidebar">
<img src="./assets/img/angle-double-up.svg" /><!-- <i class="fas fa-angle-double-up fa-2x"></i> -->
</a>
</aside>
<object data="./footer.html" class="footer-page"></object>
</body>
</html>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论