/* Yo, you're looking at my horrid CSS. Judge, let me know what I'm doing wrong because I sure as shit am NOT a web dev.
* Though maybe someday? For now, this is my cobbled together mess based on Mozilla's web developer documentation and a
* fuckton of fiddling. */

/* TODO: Split this up and improve some of our organization of classes. Ideally the delivered css should be no more than
*  4k in size so the article content can take up 10k. Stay within the TCP first roundtrip size to speed up loading.
*  Granted the style SHOULD get cached so it's not that big of a deal, but something to resolve.
*
*  TODO: Regardless of the size of this beast, I need to deduplicate some of the functionality of these classes. Lots of
*  things are unecessarily repated that could be consolidated. <- DO THIS PART FIRST, IGNORE SIZE */
:root {
  --fujiWhite: #dcd7ba;
  --oldWhite: #c8c093;
  --sumiInk0: #16161d;
  --sumiInk1: #1f1f28;
  --sumiInk2: #2a2a37;
  --sumiInk3: #363646;
  --sumiInk4: #54546d;
  --waveBlue1: #223249;
  --waveBlue2: #2d4f67;
  --winterGreen: #2b3328;
  --winterYellow: #49443c;
  --winterRed: #43242b;
  --winterBlue: #252535;
  --autumnGreen: #76946a;
  --autumnRed: #c34043;
  --autumnYellow: #dca561;
  --samuraiRed: #e82424;
  --roninYellow: #ff9e3b;
  --waveAqua1: #6a9589;
  --dragonBlue: #658594;
  --fujiGray: #727169;
  --springViolet1: #938aa9;
  --oniViolet: #957fb8;
  --crystalBlue: #7e9cd8;
  --springViolet2: #9cabca;
  --springBlue: #7fb4ca;
  --lightBlue: #a3d4d5;
  --waveAqua2: #7aa89f;
  --springGreen: #98bb6c;
  --boatYellow1: #938056;
  --boatYellow2: #c0a36e;
  --carpYellow: #e6c384;
  --sakuraPink: #d27e99;
  --waveRed: #e46876;
  --peachRed: #ff5d62;
  --surimiOrange: #ffa066;
  --navbar-height: 40px;
  --navbar-bg-color: var(--sumiInk4);
  --navbar-border-color: var(--sumiInk3);
}

::selection {
  background: color-mix(in srgb, var(--lightBlue) 25%, transparent);
}

/* This ensures the page uses full width at all times. We have to do this because some elements (our images in
*  particular) are wider than their parents and we couldn't use flex for that causing some alignment issues when the
*  webpage was too narrow (Mobile devices). */
html,
body {
  height: 100%;
  overflow-x: hidden;
  padding: 0;
  margin: 0;
  font-size: 1.05rem;
  font-family: sans-serif;
}

html {
  background-color: var(--sumiInk0);
  color: var(--fujiWhite);
  display: flex;
  flex-direction: column;
  align-items: center;
}

body {
  line-height: 1.6;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
}

.body-wrapper {
  display: flex;
  max-width: min(700px, 90vw);
  align-self: center;
  flex-direction: column;
  margin-bottom: 30px;
}

.footer-link-items {
  display: flex;
  gap: 15px;
}

footer {
  display: flex;
  gap: 10px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background-color: var(--waveBlue1);
  margin-top: auto;
  min-height: 80px;
  align-self: flex-start;
  width: 100vw;
}

footer a,
footer a:visited {
  color: var(--crystalBlue);
}

nav {
  display: flex;
  flex-direction: row;
  align-self: center;
  background-color: color-mix(in srgb, var(--navbar-bg-color) 20%, transparent);
  backdrop-filter: blur(12px);
  /* HACK: Fucken safari doesn't support `backdrop-filter`, webkit has its own. D o g s h i t. */
  -webkit-backdrop-filter: blur(12px);
  font-size: 1.1rem;
  font-family: sans-serif;
  height: var(--navbar-height);
  min-height: var(--navbar-height);
  top: 0;
  width: 300px;
  border-bottom-width: 4px;
  border-style: solid;
  border-top-style: none;
  border-bottom-right-radius: 10px;
  border-bottom-left-radius: 10px;
  /* Set the navbar to have highest priority so it shows above all other elements */
  border-color: var(--sumiInk3);
}


.nav-item:first-child {
  border-bottom-left-radius: 10px;
}

.nav-item:last-child {
  border-bottom-right-radius: 10px;
}

nav a:link,
nav a:visited {
  color: var(--fujiWhite);
  background-color: unset;
  text-decoration: none;
}

nav a:hover,
nav a:visited:hover {
  color: unset;
  background-color: unset;
}

.nav-item {
  width: 100%;
}

.nav-item:not(:last-child) {
  border-right: 2px solid var(--sumiInk3);
}

.nav-item:hover {
  transition-duration: 0.3s;
  letter-spacing: +.05em;
  color: var(--roninYellow);
}

.nav-item a {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}

img {
  margin: 0;
  overflow: scroll;
  max-height: 75vh;
  max-width: min(95vw, 125%);
  margin-left: 50%;
  transform: translateX(-50%);
  border-radius: 4px;
  outline-width: 1px;
  outline-style: solid;
  outline-color: var(--sumiInk2);
}

.anchor {
  text-decoration: none;
}

.anchor:visited,
.anchor:link,
.anchor:active {
  color: var(--carpYellow);
}

h1,
h2,
h3,
h4,
h5,
h6 {
  line-height: 1.2;
  font-family: sans-serif;
  margin-top: 10px;
  margin-bottom: 0px;
  text-decoration: underline;
  text-decoration-color: var(--boatYellow2);
}

h1 {
  font-size: 1.8rem;
}

h2 {
  font-size: 1.5rem;
}

h3 {
  font-size: 1.4rem;
}

h4 {
  font-size: 1.3rem;
}

h5 {
  font-size: 1.2rem;
}

h6 {
  font-size: 1.1rem;
}

heading-level {
  color: var(--autumnYellow);
  font-weight: normal;
  font-size: 0.9em;
}

a:link {
  color: var(--crystalBlue);
}

a:active,
a:focus {
  outline: none;
  color: none;
}

a:hover,
a:visited:hover {
  color: var(--fujiWhite);
  background-color: color-mix(in srgb, var(--crystalBlue) 50%, transparent);
  text-decoration-color: var(--crystalBlue);
}

a:visited {
  color: var(--oniViolet);
}

/* Ensure header anchor, when clicked, is not hidden by Navbar */
a.anchor {
  scroll-margin-top: 60px;
}

blockquote {
  background-color: var(--sumiInk1);
  padding: 10px;
  min-width: 90%;
  border-left-width: 5px;
  border-left-style: solid;
  border-left-color: var(--sumiInk4);
}

blockquote>p {
  margin: 0;
}

pre {
  border-radius: 4px;
  overflow: auto;
  outline-style: solid;
  outline-color: var(--sumiInk3);
  background-color: var(--sumiInk1);
  outline-width: 2.5px;
  width: min(90vw, 800px);
  transition-duration: 0.25s;
  align-self: center;
  padding: 5px;
}

pre:hover {
  outline-color: var(--sumiInk3);
  /* NOTE: We have to set important because Comrak's default syntax adapter will ALWAYS set a color for the background
   * here, no way to avoid it unless we want to rewrite chunks of the syntax adapter. Currently I'm too lazy to
   * investigate that.*/
  background-color: var(--sumiInk2) !important;
}

code {
  border-radius: 6px;
  padding: 2px;
  font-family: monospace;
  line-height: normal;
  background-color: var(--sumiInk2);
  color: var(--springViolet2);
  font-size: 0.9em;
}

pre>code {
  background-color: unset;
  display: block;
}

dt {
  display: list-item;
  list-style-type: disc;
  border-bottom: medium solid var(--sumiInk3);
}

dd {
  margin-left: 10px;
  margin-bottom: 10px;
}

dl {
  margin: 0;
}

li {
  margin-top: 2px;
}

dt::marker,
dd::marker,
dl::marker,
li::marker {
  color: var(--crystalBlue);
}

.page-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  font-family: sans-serif;
  max-width: min(700px, 90vw);
}

.page-title {
  font-size: 2.25rem;
  font-style: bold;
  font-family: sans-serif;
}

.page-detail {
  font-size: 0.95rem;
  text-align: center;
  max-width: 70%;
}

hr {
  margin: 30px;
  width: min(125%, 95vw);
  align-self: center;
  border: none;
  border-top: thin solid;
}

.footnotes {
  border-top: var(--fujiGray) thin solid;
  color: var(--springViolet2);
  font-size: 0.75rem;
}
