/*
 * Responsive Font Size and Body Padding
 */

html {
  font-size: 2.4vw;
}

@media all and (min-width: 1000px) {
  html {
    font-size: 24px;
  }
}
@media all and (max-width: 768px) {
  html {
    font-size: 18px;
  }
}

@media all and (max-width: 1000px) {
  body {
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

/*
 * Font Definitions
 */
@font-face {
  font-family: concourse;
  font-style: normal;
  font-weight: normal;
  font-stretch: normal;
  font-display: block;
  src: url("../css/concourse_3_regular.woff2") format("woff2");
}

@font-face {
  font-family: concourse;
  font-style: italic;
  font-weight: normal;
  font-stretch: normal;
  font-display: auto;
  src: url("../css/concourse_3_italic.woff2") format("woff2");
}

@font-face {
  font-family: concourse;
  font-style: normal;
  font-weight: bold;
  font-stretch: normal;
  font-display: auto;
  src: url("../css/concourse_3_bold.woff2") format("woff2");
}

@font-face {
  font-family: concourse;
  font-style: italic;
  font-weight: bold;
  font-stretch: normal;
  font-display: auto;
  src: url("../css/concourse_3_bold_italic.woff2") format("woff2");
}

@font-face {
  font-family: concourse_caps;
  font-style: normal;
  font-weight: bold;
  font-stretch: normal;
  font-display: auto;
  src: url("../css/concourse_3_caps_bold.woff2") format("woff2");
}

@font-face {
  font-family: topnav;
  font-style: normal;
  font-weight: normal;
  font-stretch: normal;
  font-display: auto;
  src: url("../css/concourse_3_caps_regular.woff2") format("woff2");
}

/*
 * Color and Font Variables
 */
:root {
  --body-font:
    concourse, Avenir, Montserrat, Corbel, "URW Gothic", source-sans-pro,
    sans-serif;
  --heading-font:
    concourse_caps, Avenir, Montserrat, Corbel, "URW Gothic", source-sans-pro,
    sans-serif;
  --code-font: ui-monospace, Menlo, Consolas, "DejaVu Sans Mono", monospace;
  --text-color: #111;
  --bg-color: #fbfbfb;
  --alt-bg-color: #f5f5f5;
  --code-block-border-color: #ddd;
  --code-block-header-color: #b3b3b3;
  --code-block-accent-color: #333;
  --heading-underline-color: #444;
  --selection-color: #d6edff;
  --a-color: #527d9a;
  --code-font-size: 70%;
  --quote-font-size: 85%;
}

/*
 * General HTML and Body Styles
 */
html {
  background-color: var(--bg-color);
  font-family: var(--body-font); /* Using the defined variable */
  margin-left: auto;
  margin-right: auto;
  max-width: 800px;
}

body {
  margin: 2% auto;
  line-height: 1.4;
  color: var(--text-color);
  text-align: justify;
  hyphens: auto;
}

/*
 * Typography
 */
h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 4%;
  margin-bottom: -1%;
}

h2 {
  font-family: var(--heading-font);
  font-size: 120%;
  font-weight: bold;
  border-bottom: 1px solid var(--heading-underline-color);
}

p {
  margin: 1em auto;
}

a {
  color: var(--a-color);
  text-decoration: none;
}

a:hover {
  opacity: 0.6;
}

/*
 * Lists and Definitions
 */
dt {
  font-weight: bold;
}

/*
 * Special Text Elements
 */
.title {
  text-align: left;
  margin: 0.8em auto;
}

.subtitle {
  text-align: center;
  font-size: 1.1em;
  line-height: 1.4;
  font-weight: bold;
  margin: 1em auto;
}

.abstract {
  margin: auto;
  width: 80%;
  font-style: italic;
}

.abstract p:last-of-type:before {
  content: "  ";
  white-space: pre;
}

.underline {
  text-decoration: underline;
}

p.verse {
  margin-left: 3%;
}

/*
 * Section Numbering and Headings
 */
[class^="section-number-"] {
  margin-right: 0.5em;
}

[id^="orgheadline"] {
  clear: both;
}

/*
 * Footnotes
 */
.footnotes {
  margin-bottom: 0;
}

.footdef {
  line-height: 2em;
  display: flex;
  align-items: flex-start;
}

.footref {
  font-size: 80%;
  vertical-align: top;
  position: relative;
}

.footnum {
  margin-right: 0.3em;
  text-align: left;
}

.footpara {
  margin: 0;
  padding: 0;
  flex: 1;
}

/*
 * Tables
 */
table {
  margin: 1em auto;
  border-top: 2px solid;
  border-bottom: 2px solid;
  border-collapse: collapse;
}

thead {
  border-bottom: 2px solid;
}

table td + td,
table th + th {
  border-left: 1px solid var(--heading-underline-color);
}

table tr {
  border-top: 1px solid var(--code-block-header-color);
}

td,
th {
  padding: 0.3em 0.6em;
  vertical-align: middle;
}

caption.t-above {
  caption-side: top;
}

caption.t-bottom {
  caption-side: bottom;
}

caption {
  margin-bottom: 0.3em;
}

/*
 * Figures and Images
 */
figure {
  padding: 0;
  margin: 1em auto;
  text-align: center;
}

figcaption {
  margin-top: 0.3em;
}

img {
  max-width: 100%;
  vertical-align: middle;
}

/*
 * Text Alignment Helpers
 */
.org-right {
  margin-left: auto;
  margin-right: 0;
  text-align: right;
}

.org-left {
  margin-left: 0;
  margin-right: auto;
  text-align: left;
}

.org-center {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

th.org-right,
td.org-right {
  text-align: right;
}

th.org-left,
td.org-left {
  text-align: left;
}

th.org-center,
td.org-center {
  text-align: center;
}

/*
 * Blockquotes
 */
blockquote {
  margin: 1em 2em;
  padding: 0 1em;
  border-left: 3px solid var(--code-block-border-color);
  background-color: var(--alt-bg-color);
  font-size: var(--quote-font-size);
}

/*
 * Example
 */
.example {
  border-top: 1px solid var(--code-block-border-color);
  border-bottom: 1px solid var(--code-block-border-color);
  background-color: var(--alt-bg-color);
  margin: 1em auto;
  padding: 0.5em 0.5em;
  position: relative;
  font-size: var(--code-font-size);
  font-family: var(--code-font);
  overflow: auto;
}

/*
 * Inline Code
 */
:not(pre) > code {
  padding: 1px 3px;
  margin: auto 1px;
  border: 1px solid var(--code-block-border-color);
  border-radius: 3px;
  background-clip: padding-box;
  color: var(--code-block-accent-color);
  background-color: var(--alt-bg-color);
  font-size: var(--code-font-size);
  font-family: var(--code-font);
}

/*
 * Source Code Blocks
 */

div.filename {
  padding-bottom: 0.1rem;
  padding-top: 0.1rem;
  padding-left: 0.5rem;
  border-top-right-radius: 0.5rem;
  background: #f1f1f1;
  font-size: var(--code-font-size);
  font-family: var(--code-font);
  color: var(--heading-underline-color);
  position: relative;
  top: 1px;
}

.src {
  font-size: var(--code-font-size);
  font-family: var(--code-font);
}

.org-src-container {
  border-top: 1px solid var(--code-block-border-color);
  border-bottom: 1px solid var(--code-block-border-color);
  background-color: var(--alt-bg-color);
  padding: 0.1em 0.5em;
  position: relative;
  margin-top: 0;
  margin-right: auto;
  margin-bottom: 1em;
  margin-left: auto;
}

.org-src-container > pre {
  overflow: auto;
}

.org-src-container > pre:before {
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  padding: 0 0.5em;
  border-bottom-left-radius: 8px;
  border: 0;
  font-size:75%;
  color: var(--code-block-accent-color);
}

/* Specific language tags for code blocks */
.org-src-container > pre.src-sh:before,
.org-src-container > pre.src-bash:before {
  content: "sh";
}

.org-src-container > pre.src-emacs-lisp:before {
  content: "Emacs Lisp";
}

.org-src-container > pre.src-org:before {
  content: "Org";
}

.org-src-container > pre.src-cpp:before {
  content: "C++";
}

.org-src-container > pre.src-c:before {
  content: "C";
}

.org-src-container > pre.src-html:before {
  content: "HTML";
}

.org-src-container > pre.src-js:before,
.org-src-container > pre.src-javascript:before {
  content: "Javascript";
}

.org-src-container > pre.src-python:before {
  content: "Python";
}

.org-src-container > pre.src-shen:before {
  content: "Shen";
}

.org-src-container > pre.src-typescript:before {
  content: "Typescript";
}

.org-src-container > pre.src-rust:before {
  content: "Rust";
}

/*
 * Text Selection Style
 */
::selection {
  background: var(--selection-color);
}
