.highlight table td { padding: 5px; }

.highlight table pre { margin: 0; }

.highlight .cm { color: #999988; font-style: italic; }

.highlight .cp { color: #999999; font-weight: bold; }

.highlight .c1 { color: #999988; font-style: italic; }

.highlight .cs { color: #999999; font-weight: bold; font-style: italic; }

.highlight .c, .highlight .cd { color: #999988; font-style: italic; }

.highlight .err { color: #a61717; background-color: #e3d2d2; }

.highlight .gd { color: #000000; background-color: #ffdddd; }

.highlight .ge { color: #000000; font-style: italic; }

.highlight .gr { color: #aa0000; }

.highlight .gh { color: #999999; }

.highlight .gi { color: #000000; background-color: #ddffdd; }

.highlight .go { color: #888888; }

.highlight .gp { color: #555555; }

.highlight .gs { font-weight: bold; }

.highlight .gu { color: #aaaaaa; }

.highlight .gt { color: #aa0000; }

.highlight .kc { color: #000000; font-weight: bold; }

.highlight .kd { color: #000000; font-weight: bold; }

.highlight .kn { color: #000000; font-weight: bold; }

.highlight .kp { color: #000000; font-weight: bold; }

.highlight .kr { color: #000000; font-weight: bold; }

.highlight .kt { color: #445588; font-weight: bold; }

.highlight .k, .highlight .kv { color: #000000; font-weight: bold; }

.highlight .mf { color: #009999; }

.highlight .mh { color: #009999; }

.highlight .il { color: #009999; }

.highlight .mi { color: #009999; }

.highlight .mo { color: #009999; }

.highlight .m, .highlight .mb, .highlight .mx { color: #009999; }

.highlight .sb { color: #d14; }

.highlight .sc { color: #d14; }

.highlight .sd { color: #d14; }

.highlight .s2 { color: #d14; }

.highlight .se { color: #d14; }

.highlight .sh { color: #d14; }

.highlight .si { color: #d14; }

.highlight .sx { color: #d14; }

.highlight .sr { color: #009926; }

.highlight .s1 { color: #d14; }

.highlight .ss { color: #990073; }

.highlight .s { color: #d14; }

.highlight .na { color: #008080; }

.highlight .bp { color: #999999; }

.highlight .nb { color: #0086B3; }

.highlight .nc { color: #445588; font-weight: bold; }

.highlight .no { color: #008080; }

.highlight .nd { color: #3c5d5d; font-weight: bold; }

.highlight .ni { color: #800080; }

.highlight .ne { color: #990000; font-weight: bold; }

.highlight .nf { color: #990000; font-weight: bold; }

.highlight .nl { color: #990000; font-weight: bold; }

.highlight .nn { color: #555555; }

.highlight .nt { color: #000080; }

.highlight .vc { color: #008080; }

.highlight .vg { color: #008080; }

.highlight .vi { color: #008080; }

.highlight .nv { color: #008080; }

.highlight .ow { color: #000000; font-weight: bold; }

.highlight .o { color: #000000; font-weight: bold; }

.highlight .w { color: #bbbbbb; }

.highlight { background-color: #f8f8f8; }

* { box-sizing: border-box; }

body { padding: 0; margin: 0; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.5; color: var(--ink); background-color: var(--surface); }

a { color: var(--nus-blue); text-decoration: none; }
a:hover { color: var(--nus-blue-deep); text-decoration: underline; text-decoration-color: var(--nus-orange); text-underline-offset: 0.18em; }
a:focus-visible, .btn:focus-visible { outline: 3px solid var(--nus-blue); outline-offset: 3px; }

.btn { display: inline-block; margin-bottom: 1rem; color: #fff; background-color: rgba(255, 255, 255, 0.06); border-color: var(--nus-orange); border-style: solid; border-width: 1px; border-radius: 0.3rem; transition: color 0.2s, background-color 0.2s, border-color 0.2s; }
.btn:hover { color: #fff; text-decoration: none; background-color: rgba(255, 255, 255, 0.13); border-color: var(--nus-orange); }
.btn + .btn { margin-left: 1rem; }
@media screen and (min-width: 64em) { .btn { padding: 0.75rem 1rem; } }
@media screen and (min-width: 42em) and (max-width: 64em) { .btn { padding: 0.6rem 0.9rem; font-size: 0.9rem; } }
@media screen and (max-width: 42em) { .btn { display: block; width: 100%; padding: 0.75rem; font-size: 0.9rem; }
  .btn + .btn { margin-top: 1rem; margin-left: 0; } }

.page-header {
    color: var(--ink); text-align: center;
    background:
      radial-gradient(ellipse at top left, rgba(0, 61, 124, 0.08), transparent 55%),
      radial-gradient(ellipse at bottom right, rgba(239, 124, 0, 0.06), transparent 55%),
      var(--surface-muted);
    border-bottom: 1px solid var(--border);
}
.page-header a:focus-visible { outline-color: var(--nus-orange); }
@media screen and (min-width: 64em) { .page-header { padding: 2.5rem 2rem 2rem; } }
@media screen and (min-width: 42em) and (max-width: 64em) { .page-header { padding: 1.5rem 2rem; } }
@media screen and (max-width: 42em) { .page-header { padding: 1.5rem 1rem; } }

.project-name { margin-top: 0; margin-bottom: 0.1rem; font-weight: 700; color: var(--ink); }
.project-name .brand-accent { color: var(--nus-orange); }
@media screen and (min-width: 64em) { .project-name { font-size: 3.6rem; } }
@media screen and (min-width: 42em) and (max-width: 64em) { .project-name { font-size: 2.75rem; } }
@media screen and (max-width: 42em) { .project-name { font-size: 2.1rem; } }

.project-tagline { margin-bottom: 1.75rem; font-weight: 400; color: var(--muted); }
@media screen and (min-width: 64em) { .project-tagline { font-size: 1.1rem; } }
@media screen and (min-width: 42em) and (max-width: 64em) { .project-tagline { font-size: 1rem; } }
@media screen and (max-width: 42em) { .project-tagline { font-size: .925rem; } }

.page-header .btn {
  display: inline-block;
  margin-bottom: 0;
  padding: .35rem 0;
  color: var(--muted);
  background: none;
  border: none;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  font-size: .925rem;
  font-weight: 600;
  letter-spacing: .01em;
  transition: color .2s ease, border-color .2s ease;
}
.page-header .btn:hover {
  color: var(--ink);
  background: none;
  border-bottom-color: var(--nus-orange);
}
.page-header .btn + .btn { margin-left: 1.75rem; }

@media screen and (max-width: 42em) {
  .page-header .btn { display: inline-block; width: auto; padding: .35rem 0; font-size: .875rem; }
  .page-header .btn + .btn { margin-top: 0; margin-left: 1.25rem; }
}

.main-content {
  word-wrap: break-word;
  padding-top: 2rem;
  padding-bottom: 2rem;
  padding-left: max(1rem, 10vw);
  padding-right: max(1rem, 10vw);
}
.main-content :first-child { margin-top: 0; }
@media screen and (min-width: 64em) { .main-content { font-size: 1.1rem; } }
@media screen and (min-width: 42em) and (max-width: 64em) { .main-content { font-size: 1.1rem; } }
@media screen and (max-width: 42em) { .main-content { font-size: 1rem; } }
.main-content img { max-width: 100%; }
.main-content h1, .main-content h2, .main-content h3, .main-content h4, .main-content h5, .main-content h6 {
    margin-top: 2rem; margin-bottom: 1rem; font-weight: bold; color: var(--ink);
}
.main-content p { margin-bottom: 1em; }
.main-content code { padding: 2px 4px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 0.9rem; color: var(--nus-blue-deep); background-color: var(--surface-muted); border-radius: 0.3rem; }
.main-content pre { padding: 0.8rem; margin-top: 0; margin-bottom: 1rem; font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace; color: var(--nus-blue-deep); word-wrap: normal; background-color: var(--surface-muted); border: solid 1px var(--border); border-radius: 0.3rem; }
.main-content pre > code { padding: 0; margin: 0; font-size: 0.9rem; color: var(--nus-blue-deep); word-break: normal; white-space: pre; background: transparent; border: 0; }
.main-content .highlight { margin-bottom: 1rem; }
.main-content .highlight pre { margin-bottom: 0; word-break: normal; }
.main-content .highlight pre, .main-content pre { padding: 0.8rem; overflow: auto; font-size: 0.9rem; line-height: 1.45; border-radius: 0.3rem; -webkit-overflow-scrolling: touch; }
.main-content pre code, .main-content pre tt { display: inline; max-width: initial; padding: 0; margin: 0; overflow: initial; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; }
.main-content pre code:before, .main-content pre code:after, .main-content pre tt:before, .main-content pre tt:after { content: normal; }
.main-content ul, .main-content ol { margin-top: 0; }
.main-content blockquote { padding: 0 1rem; margin-left: 0; color: var(--muted); border-left: 0.3rem solid var(--nus-orange); }
.main-content blockquote > :first-child { margin-top: 0; }
.main-content blockquote > :last-child { margin-bottom: 0; }
.main-content table { display: block; width: 100%; overflow: auto; word-break: normal; word-break: keep-all; -webkit-overflow-scrolling: touch; }
.main-content table th { font-weight: bold; }
.main-content table th, .main-content table td { padding: 0.5rem 1rem; border: 1px solid var(--border); }
.main-content dl { padding: 0; }
.main-content dl dt { padding: 0; margin-top: 1rem; font-size: 1rem; font-weight: bold; }
.main-content dl dd { padding: 0; margin-bottom: 1rem; }
.main-content hr { height: 2px; padding: 0; margin: 1rem 0; background-color: var(--border); border: 0; }

.site-footer { padding-top: 2rem; margin-top: 2rem; border-top: solid 1px var(--border); }
@media screen and (min-width: 64em) { .site-footer { font-size: 1rem; } }
@media screen and (min-width: 42em) and (max-width: 64em) { .site-footer { font-size: 1rem; } }
@media screen and (max-width: 42em) { .site-footer { font-size: 0.9rem; } }

.site-footer-owner { display: block; font-weight: bold; }

.site-footer-credits { color: var(--muted); }
