@font-face {
  font-family: Open Sans;
  src: url('/fonts/OpenSans-Regular.woff');
}

body {
  margin: 1em 5em;
  text-align: justify;
  font-family: 'Open Sans', 'Liberation Sans', sans-serif;
}

body.index,
.body-index {
  margin: 2em 10em 1em 10em;
  padding-right: 300px;
}

/* override above, since we'll have to compound
 * with the original body (only use this when
 * body.index cannot possibly be used!) */
.body-index {
  margin: 2em 5em 1em 5em;
}

body.index.no-sidebar,
.body-index.no-sidebar {
  padding-right: 0px;
}


a { color: #0066cc; }
a:visited { color: #6666cc; }

/* hanging; ids for asciidoc styling */
header, footer,
#header, #footer, .article #copyright {
  margin: 0em -3em;
  text-align: left;
}

body.index footer,
.body-index footer {
  margin: 0em -10em;
}

/* typesetting standards for ~60 chars per line */
body article .content,
body.article #content {
  clear: both;
  margin: auto;

  max-width: 38em;  /* fallback for older browsers */
  max-width: 60ch;

  line-height: 1.8em;
}
body article header,
body.article #header {
  margin: auto;

  max-width: 44em;  /* fallback for older browsers */
  max-width: 70ch;
}

h1, h2, h3, #menu,
body.index ul.index li .day,
.author,
strong {
  font-family: 'URW Gothic L', 'Avant Garde', sans-serif;
  font-weight: normal;
}

h1 { font-size: 1.8em; }
h2 { font-size: 1.4em; }

h2.date {
  display: block;
  font-size: 1.1em;
  color: #666f63;

  margin: -1em 1.5em 1.5em 0em;
  float: left;
}

h2.date ~ .author {
  display: block;
  margin-top: -1em;
}

.author > .email {
  margin-left: 0.25em;
}

h1 a, h1 a:visited {
  text-decoration: none;
  color: inherit;
}

/* latter for asciidoc-generated output */
h1.title,
#header h1 {
  font-size: 2em;
  margin-bottom: 0.1em;
  text-align: left;
}

h2.desc {
  font-size: 0.8em;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: normal;
  color: #666f63;

  margin-top: 0px;
  margin-bottom: 2em;
}

#menu {
  text-align: center;
  padding: 0;
  margin: 0px -300px 3.5em 0px;
}
.no-sidebar #menu {
  /* cancels out #menu padding above */
  margin-right: 0px;
}
#menu li {
  display: inline-block;
  font-size: 1.3em;
  letter-spacing: 0.05em;

  /* in addition to the 3.5em above; allows
     for decent spacing when line overflows
     at lower resolutions
     (3.5 + [0.5/1.3=0.38] = 4.0)*/
  margin-bottom: 0.38em;
}
#menu li a {
  color: #666f63;
  text-decoration: none;
  border-left: 1px solid #868f83;
  padding: 0.15em 1em;
}
#menu li:first-child a {
  border-left: none;
}

#headline {
  position: absolute;
  text-align: center;
  right: 10em;
}
#headline a {
  display: block;
  text-decoration: none;
  margin-top: 2em;
  clear: left;
}
#headline a:first-child {
  margin-top: 0;
}
#headline img {
  margin-left: 2em;
}

body.index .content,
.body-index .content {
  /* this is not ideal, but works since the sidebar content is (currently) all
     images */
  min-height: 750px;
  padding-right: 1.5em;

  /* don't let text get too wide */
  max-width: 40em;
  margin: auto;

  line-height: 1.8em;
}
#cgit .content {
  max-width: none;
}
body.index.no-sidebar .content,
.body-index.no-sidebar .content {
  min-height: inherit;
}

body.index h3.index {
  margin-bottom: 0.5em;
}
body.index ul.index {
  text-align: left;
  list-style: none;
  margin: 0px;
  padding-left: 1.5em;
}
body.index ul.index li {
  margin: 1em 0px;
}
body.index ul.index li .day {
  float: left;
  margin-right: 0.5em;
}

p#ref-0 {
  margin-top: 2em;
}
p.ref {
  font-size: 0.9em;
  margin: 0.25em 0em;
  text-align: left;
}
sup {
  font-size: 0.6em;
}
p.ref:target {
  background-color: #fce94f;
}

pre {
  white-space: pre-wrap;
}

dt {
  letter-spacing: 0.1em;
}

tt {
  background-color: #eeeeec;
  color: #000055;
}

.inline-img {
  text-align: center;
}

.avatar {
  display: block;

  border-radius: 5px;
  box-shadow: 1px 1px 3px #666f63;

  margin: auto;
}

.attribution {
  display: block;

  font-size: 0.75em;
  text-decoration: italic;
  text-align: right;

  width: 66%;
  margin-left: auto;
}

.listingblock {
  background-color: #eeeeec;
  background-image: url('images/cross_scratches.png');
  padding: 0.5em;
  border: 1px solid #babdb6;
  border-radius: 0.25em
}

.exampleblock {
  margin-left: 2em;
  padding-left: 1em;
  border-left: 5px solid #eeeeec;
}

#gnuinside {
  position: absolute;
  display:  block;

  top:    0px;
  right:  0px;
  width:  50px;
  height: 50px;
}

footer, #footer, .article #copyright {
  font-size: 0.9em;
  margin-top: 2em;
  clear: both;
}

footer .commit-id {
  font-family: monospace;
}

/* to account for headline (sidebar) */
body.index footer .bimgs,
.body-index footer.bimgs,
body.index footer hr,
.body-index footer hr {
  margin-right: -300px;
}

.no-sidebar footer .bimgs,
.no-sidebar footer hr {
  margin-right: 0px;
}

#selflinks {
  position: absolute;
  top: 60px;
  right: 0px;
  width: 42px;
  padding: 6px;
}
#selflinks a {
  text-decoration: none;
}

#selflinks img {
  transition: transform 0.25s;
}
#selflinks img[src*=octoright]:hover {
  transform: rotate(-20deg);
}

.octoflop {
  /* make upright again (image is rotated 270deg) */
  transform: rotate(90deg);

  animation-duration: 2s;
  animation-delay: 2s;
  animation-name: octoflop;
  animation-fill-mode: forwards;
}

.talk-logo {
  display:    block;
  text-align: center;
}

p ~ p .talk-logo {
  margin-top: 5ex;
}

@keyframes octoflop {
  30% {
    transform: rotate(-35deg);
  }
  50% {
    transform: rotate(25deg);
  }
  65% {
    transform: rotate(-17deg);
  }
  75% {
    transform: rotate(10deg);
  }
  85% {
    transform: rotate(-5deg);
  }
  90% {
    transform: rotate(3deg);
  }
  95% {
    transform: rotate(-2deg);
  }
  100% {
    transform: rotate(0deg);
  }
}

.hn-icon {
    display: block;

    background-color: #ff6600;

    width: 42px;
    height: 42px;

    font-size: 16px;
    font-weight: bold;
    text-align: center;
    line-height: 42px;
}

.hn-icon,
a.hn-icon:visited,
a.hn-icon:active,
a.hn-icon:hover {
    color: white;
    text-decoration: none;
}

.bimgs {
  float: right;
  margin-left: 1em;
}

.bimgs img {
  margin-left: 0.1em;
}
.bimgs img:first-child {
  margin-left: 0em;
}

body.content .abstract {
  font-size: 0.9em;
}
body.content .abstract .start {
  font-weight: bold;
}

dl > dd {
  margin-bottom: 0.5em;
}

dl > dd > dl {
  margin-top: 1em;
}

dl > dd > p:last-child {
  margin-bottom: 0px;
}

#postamble > p {
  margin: 0em;
}

#index-headline {
  display: block;
  margin: 0em auto 2em auto;
}

#index-headline img {
  border-radius: 0.25em;
  max-width: 90%;
}


/** exclusively asciidoc-generated content styling **/
body.article h2 {
  position: relative;

  border-bottom: 2px solid #babdb6;
  left: -2em;

  margin-right: -2em;
}

body.article h3 {
  border-bottom: 1px solid #babdb6;
}

#author {
  font-size: 1.1em;
  letter-spacing: 0.1em;
}

#footer {
  border-top: 2px solid #babdb6;
  padding-top: 0.5em;
}

.article #copyright {
  margin-top: 0;
}

@media screen and (max-width: 1024px) {
  body {
    margin: 2em !important;
  }

  /* account for upper-right page fold using the full
     image width---this will be guaranteed to work
     regardless of the user's font size; kinda ruins
     the illusion if text is atop of it ;) */
  h1.subject {
    margin-right: 50px;
  }

  #headline {
    right: 2em;
  }

  header, footer,
  #header, #footer, .article #copyright {
    margin-left: 0px;
  }

  body.index footer,
  .body-index footer {
    margin: 0em;
  }
}

@media screen and (max-width: 640px) {
  body {
    margin: 1em !important;
    padding-right: 0 !important;
  }
  body.index .content,
  .body-index .content {
    min-height: 0px;
    padding-right: 0px;
  }

  header {
    margin-right: 0px;
  }

  #menu {
    margin-right: 0px;
    margin-bottom: 2em;
  }

  #headline {
    position: initial;
    float: right;
    width: 75px;
  }

  #headline a {
    display: inline;
    margin: 0.5em;
  }
  #headline img {
    max-height: 75px;
    margin-left: 0;
  }
  #index-headline img {
    max-height: 5em;
  }

  #selflinks {
    position: absolute;
    top: 0px;
    right: 50px;
    width: auto;
    height: 42px;
    padding: 6px;
  }

  .hn-icon {
    float: right;
    margin-left: 2px;
  }

  header, footer,
  body.index footer .bimgs,
  .body-index footer .bimgs,
  body.index footer hr,
  .body-index footer hr,
  #header, #footer, .article #copyright {
    margin-right: 0px;
  }

  .bimgs {
    float: none;
    margin-left: 0px;
  }

  /* we're pretty low on real estate at this point */
  blockquote {
    margin: 1em 0px 1em 2em;
  }

  ul, ul.index {
    padding-left: 1em !important;
  }
}

/* selflinks start to overlap with heading */
@media screen and (max-width: 475px) {
  #selflinks img {
    max-width: 32px;
    max-height: 32px;
  }


  .hn-icon {
    max-width: 32px;
    max-height: 32px;

    font-size: 12px;
    line-height: 32px;
  }
}

/* when things start getting odd from 640px */
@media screen and (max-width: 420px) {
  #menu {
    font-size: 0.8em;
  }

  #selflinks img {
    max-width: 21px;
    max-height: 21px;
  }

  .hn-icon {
    max-width: 21px;
    max-height: 21px;

    font-size: 9px;
    line-height: 21px;
  }

  footer {
    font-size: 0.9em;
  }

  .bimgs img {
    width: 70px;
    height: 25px;
  }
}


/*** Org mode HTML output ***/
/* much of the above will overlap, so only some is needed here */
#postamble {
  margin: 2em -5em 0em -5em;
  text-align: left;
  font-size: 0.9em;

  border-top: 1px solid #babdb6;
  padding-top: 0.5em;
}

.todo, .done {
  font-size: 0.1em;
  letter-spacing: -0.1em;
  color: transparent;
}

/* note that we must undo our hiding */
.todo::before,
.done::before {
  position: absolute;
  visibility: visible;

  letter-spacing: normal;
  font-size: 12em;
  left: -1.5em;
  top: -0.1em;

  font-weight: bold;
}

.todo::before {
  color: black;
  content: '☐';
}

.done::before {
  color: #4e9a06;
  content: '☑';
}

/* eases positioning in, e.g., margin */
.outline-1,
.outline-2,
.outline-3 {
  position: relative;
}

#table-of-contents .todo,
#table-of-contents .done {
  display: none;
}


/** cgit customization **/

div#cgit div.content {
  padding: 2em 0em;  /* remove left/right margin */
}

/* repo name and desc, above tabs */
div#cgit table#header td.main {
  font-size: 1.4em;  /* h2 font size (see above) */
}
div#cgit table#header td.sub {
  border-top: 0px;
}

div#cgit #header {
  margin: inherit;  /* undo previous conflicting style */
}

/* reduce tab page separator height */
div#cgit table.tabs {
  border-bottom-width: 1px;
}
div#cgit table.tabs td a {
  padding: 0.25ex 0.75em 0ex;
}
div#cgit table.tabs td a.active {
  background-color: inherit;
  border-bottom: 3px solid #ccc;
}

div#cgit div.content {
  border-bottom: inherit;  /* we have our own footer */
}

/* we have limited width, so wrap and compensate */
div#cgit table.list.nowrap td {
  white-space: inherit;
  text-align: left;
}
div#cgit table.list.nowrap td.sublevel-repo,
div#cgit table.list.nowrap td .age-months {
  white-space: nowrap;
}
div#cgit table.list.nowrap tr {
  vertical-align: top;
}

div#cgit table.list tr:not(.nohover) td {
  padding-top: 0.5ex;
  padding-bottom: 0.5ex;
}

/* getting creative...separate sections */
div#cgit table.list tr:not(.nohover) + tr.nohover td {
  padding-top: 1ex;
}

/* reduce headings relative to surrounding page */
div#cgit h1 { font-size: 1.4em; }
div#cgit h2 { font-size: 1.2em; }
div#cgit h3 { font-size: 1.1em; }
div#cgit h4 { font-size: 1.0em; }


/*** https://github.com/jgm/highlighting-kate/blob/master/css/hk-tango.css * ***/
/* Loosely based on pygment's tango colors */
table.sourceCode, tr.sourceCode, td.sourceCode, table.sourceCode pre
{ margin: 0; padding: 0; border: 0; vertical-align: baseline; border: none; background-color: #f8f8f8 }
td.nums { text-align: right; padding-right: 5px; padding-left: 5px; background-color: #f0f0f0; }
td.sourceCode { padding-left: 5px; }
code.sourceCode { background-color: #f8f8f8; }
pre.sourceCode { background-color: #f8f8f8; line-height: 125% }
td.nums pre { background-color: #f0f0f0; line-height: 125% }
code.sourceCode span.kw { color: #204a87; font-weight: bold } /* Keyword */
code.sourceCode span.dt { color: #204a87 } /* Keyword.Type */
code.sourceCode span.dv { color: #0000cf } /* Literal.Number.Integer */
code.sourceCode span.bn { color: #0000cf } /* Literal.Number.Hex */
code.sourceCode span.fl { color: #0000cf } /* Literal.Number.Float */
code.sourceCode span.ch { color: #4e9a06 } /* Literal.String.Char */
code.sourceCode span.st { color: #4e9a06 } /* Literal.String */
code.sourceCode span.co { color: #8f5902; font-style: italic } /* Comment */
code.sourceCode span.ot { color: #8f5902 } /* Comment.Preproc */
code.sourceCode span.al { color: #ef2929 } /* Generic.Error */
code.sourceCode span.fu { color: #000000 } /* Name.Function */
code.sourceCode span.re { }
code.sourceCode span.er { color: #a40000; border: 1px solid #ef2929 } /* Error */
