/* define fonts */
:root {
  --font-monospace: 'Berkeley Mono', 'IBM Plex Mono', 'Cascadia Mono', 'Roboto Mono', 'Source Code Pro', 'Fira Mono', 'Courier New', monospace;
}

/* dark/light theming */
:root {
  /* Default dark theme */
  --bg: var(--dark-base00);
  --code: var(--dark-base06);
  --fg: var(--dark-base05);
  --highlight: var(--dark-base0A);
  --hover: var(--dark-base0C);
  --inner-bg: var(--dark-base02);
  --link: var(--dark-base0D);
  --logo-text: var(--dark-base09);
  --logo: var(--dark-base0B);
  --muted: var(--dark-base03);
  --off-bg: var(--dark-base01);
  --off-fg: var(--dark-base04);
  --root-prompt: var(--dark-base08);
  --user-prompt: var(--dark-base07);
}

:root[data-theme="light"] {
  --bg: var(--light-base00);
  --off-bg: var(--light-base01);
  --inner-bg: var(--light-base02);
  --muted: var(--light-base03);
  --off-fg: var(--light-base04);
  --fg: var(--light-base05);
  --code: var(--light-base06);
  --user-prompt: var(--light-base07);
  --root-prompt: var(--light-base08);
  --logo-text: var(--light-base09);
  --highlight: var(--light-base0A);
  --logo: var(--light-base0B);
  --hover: var(--light-base0C);
  --link: var(--light-base0D);
}

@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) {
    --bg: var(--light-base00);
    --off-bg: var(--light-base01);
    --inner-bg: var(--light-base02);
    --muted: var(--light-base03);
    --off-fg: var(--light-base04);
    --fg: var(--light-base05);
    --code: var(--light-base06);
    --user-prompt: var(--light-base07);
    --root-prompt: var(--light-base08);
    --logo-text: var(--light-base09);
    --highlight: var(--light-base0A);
    --logo: var(--light-base0B);
    --hover: var(--light-base0C);
    --link: var(--light-base0D);
  }
}

body {
  transition: background-color 0.3s ease, color 0.3s ease;
}

.theme-toggle {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  width: 1.5rem;
  height: 1.5rem;
  z-index: 1000;
  transition: opacity 0.3s ease;
}

.theme-toggle__icon {
  width: 100%;
  height: 100%;
  transition: opacity 0.3s ease;
}

.theme-toggle__icon svg {
  width: 100%;
  height: 100%;
  fill: var(--off-fg);
  transition: fill 0.3s ease;
}

.theme-toggle:hover .theme-toggle__icon svg {
  fill: var(--hover);
}

.theme-toggle__icon--sun,
[data-theme="dark"] .theme-toggle__icon--moon {
  display: none;
}

[data-theme="dark"] .theme-toggle__icon--sun,
.theme-toggle__icon--moon {
  display: block;
}

.theme-toggle:hover {
  opacity: 0.7;
}

.theme-toggle:focus {
  outline: none;
}

.theme-toggle:focus-visible {
  outline: 2px solid var(--hover);
  outline-offset: 2px;
}

.theme-toggle:hover .theme-toggle__icon {
  fill: var(--hover);
}

.page__nav ul {
  padding-right: 3rem;
}

/* load preferred font */
@font-face {
  font-family: 'Berkeley Mono';
  font-style: normal;
  font-weight: 400;
  font-display: fallback;
  src: local('Berkeley Mono'),
    url('https://cdn.runtimeterror.dev/fonts/BerkeleyMono-Regular.woff2') format('woff2'),
}

/* minor layout tweaks */
.page {
  max-width: 72rem;
}

.page__body {
  margin: 1rem;
}

.page__aside {
  margin: 0 1rem 0 0;
}


/* logo tweaks */
.page__logo {
  color: var(--logo-text);
}

.page__logo-inner {
  opacity: 0.80;
}

/* Footer tweaks */
.footer_slashes {
  font-size: 14px;
  line-height: 1.1rem;
  color: var(--muted);
}

.footer_slashes a:link,
.footer_slashes a:visited {
  color: var(--link);
  text-decoration: none;
}

.footer_links,
.copyright {
  font-size: 12px;
  line-height: 1.1rem;
  color: var(--muted);
}

.footer_links a:link,
.footer_links a:visited,
.copyright a:link,
.copyright a:visited {
  color: var(--off-fg);
  text-decoration: none;
}

.footer_links a:hover,
.footer_slashes a:hover,
.copyright a:hover {
  color: var(--hover);
  text-decoration: underline;
}

/* Notice CSS Built on hugo-notice by Nicolas Martignoni: https://github.com/martignoni/hugo-notice */
.notice {
  --notice-title-color: #fff;
  --notice-warn-color: #c33;
  --notice-info-color: #fb7;
  --notice-note-color: #6be;
  --notice-tip-color: #5a5;

  --notice-padding: 18px;
  --notice-line-height: 24px;
  --notice-margin-bottom: 24px;
  --notice-border-radius: 4px;
  --notice-title-margin: 12px;
  --notice-bg-opacity: 10%;

  padding: var(--notice-padding);
  line-height: var(--notice-line-height);
  margin-bottom: var(--notice-margin-bottom);
  border-radius: var(--notice-border-radius);
  color: var(--fg);
}

.notice p:last-child {
  margin-bottom: 0;
}

.notice-title {
  margin: calc(-1 * var(--notice-padding));
  margin-bottom: var(--notice-title-margin);
  padding: 4px var(--notice-padding);
  border-radius: var(--notice-border-radius) var(--notice-border-radius) 0 0;
  font-weight: 700;
  color: var(--notice-title-color);
}

.notice.warning .notice-title {
  background: var(--notice-warning-color);
}

.notice.info .notice-title {
  background: var(--notice-info-color);
}

.notice.note .notice-title {
  background: var(--notice-note-color);
}

.notice.tip .notice-title {
  background: var(--notice-tip-color);
}

.notice.warning {
  background: color-mix(in srgb, var(--notice-warning-color) var(--notice-bg-opacity), transparent);
}

.notice.info {
  background: color-mix(in srgb, var(--notice-info-color) var(--notice-bg-opacity), transparent);
}

.notice.note {
  background: color-mix(in srgb, var(--notice-note-color) var(--notice-bg-opacity), transparent);
}

.notice.tip {
  background: color-mix(in srgb, var(--notice-tip-color) var(--notice-bg-opacity), transparent);
}

.icon-notice {
  display: inline-flex;
  align-self: center;
  margin-right: 8px;
}

.icon-notice img,
.icon-notice svg {
  height: 1em;
  width: 1em;
  fill: currentColor;
}

.icon-notice img,
.icon-notice.baseline svg {
  top: 0.125em;
  position: relative;
}

/* pagination overrides */
ul.pagination li::marker {
  content: '';
}

ul.pagination li {
  margin: 0 0.25rem;
}

.pagination {
  display: flex;
  justify-content: center;
}

/* statuslol overrides */
.statuslol {
  background: var(--off-bg) !important;
  flex-direction: column
}

.statuslol_emoji_container {
  font-size: 1.5em !important;
}

.statuslol_content p,
.statuslol_content li,
.statuslol_content em,
.statuslol_content strong {
  overflow-wrap: inherit;
  font-size: 0.8em;
  line-height: normal;
  margin: 0.8em auto;
  color: var(--fg);
}

.statuslol_time a:link,
.statuslol_time a:visited {
  color: var(--link) !important;
}

.statuslol_time a:hover,
.statuslol_time a:active {
  color: var(--hover) !important;
}

small[style^="opacity: .5"] {
  opacity: 1 !important;
}

/* crucial track styling */
.crucial-track {
  background: var(--off-bg) !important;
  display: flex;
  flex-direction: column;
  border-radius: 0.5rem;
  padding: 0.7rem;
  font-size: 0.9rem;
  line-height: 0.9rem;
}

.crucial-track img {
  width: 14rem;
  height: auto;
  object-fit: cover;
}

@media (min-width: 45rem) {
  .crucial-track img {
    max-width: 100%;
    margin: 0 auto;
  }
}

/* code overrides */
pre,
code,
kbd,
samp {
  color: var(--code);
}

/* search box styling */
form {
  display: flex;
  flex-direction: row;
  border-radius: 0.25rem;
  outline: 0.25rem solid var(--bg);
  width: 240px;
  transition: width .2s ease-in-out, outline .2s ease-in-out;
}

input {
  flex-grow: 2;
  border: none;
  background-color: var(--off-bg);
  color: var(--off-fg);
  height: 1.5rem;
  border-radius: 0.25rem 0 0 0.25rem;
  padding-left: 0.5rem;
  font-family: var(--font-monospace);
}

form {
  width: auto;
}

input:focus {
  outline: none;
}

form:focus-within {
  outline: 1px solid var(--logo);
  width: 100%;
}

form button {
  outline: none;
  border: none;
  background-color: var(--off-bg);
  color: var(--link);
}

/* tags list styling */
.tagsArchive {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  grid-gap: 0.5rem;
  margin: 0.5rem 0;
}

.tagsArchive sup {
  font-size: 0.75rem;
  margin-left: 0.2rem;
  margin-right: 0.5rem;
}

.date {
  font-size: 0.8rem;
  color: var(--off-fg);
}

/* blockquote styling */
blockquote {
  font-style: italic;
  border-left: 0.25rem solid var(--logo);
  padding-left: 0.25rem;
}

/* post front matter styling*/
.frontmatter hr {
  margin-bottom: 0rem;
  margin-top: 0rem;
}

.frontmatter h1 {
  margin-top: 0rem;
}

.frontmatter .label {
  color: var(--off-fg);
  font-size: 0.8rem;
}

.frontmatter .title {
  color: var(--fg);
  font-weight: 600;
  font-size: 1.1rem;
}

.frontmatter table {
  overflow-wrap: break-word;
  margin-bottom: 0rem;
}

.frontmatter_tags {
  font-size: 0.8rem;
  color: var(--off-fg);
}

/* back-to-top styling */
#back-to-top {
  background: var(--inner-bg);
  height: 56px;
  width: 56px;
}

#back-to-top svg {
  fill: var(--link);
}

/* footnote link styling */
.footnote-backref {
  text-decoration: none;
}

/* hr override */
hr {
  margin-top: 1.5rem;
}

/* no extra space for paragraphs with lists */
p:not(:has(+ ol)),
p:not(:has(+ ul)) {
  margin-bottom: 1.5em;
}

p:has(+ ol),
p:has(+ ul) {
  margin-bottom: 0;
}

/* tagline tweaks */
#tagline_container {
  height: 3rem;
}

#tagline {
  font-size: 0.8rem;
  line-height: 0.8rem;
}

#tagline::after {
  content: "";
  width: 0.5rem;
  height: 1rem;
  background: var(--muted);
  display: inline-block;
  margin-left: 0.2rem;
  vertical-align: text-bottom;
  animation: cursor-blink 1.5s steps(2) infinite;
}

@keyframes cursor-blink {
  0% {
    opacity: 0;
  }
}

/* Header anchor links */
.hlink {
  opacity: 0.4;
  color: var(--muted) !important;
}

h1:hover .hlink,
h2:hover .hlink,
h3:hover .hlink,
h4:hover .hlink,
h5:hover .hlink,
h6:hover .hlink {
  opacity: 0.8;
  color: var(--link) !important;
}

/* Style rss2html embed plug */
ul.rss2html-embed>div:last-child {
  margin-top: 0.5em;
  font-size: 0.8em;
  font-style: italic;
}
