html {
  scroll-behavior: smooth;
}

body {
  color: #000;
  background-color: #fbfbfb;
  font-size: 24px;
  font-family: 'Linux Libertine',serif;
  line-height: 140%;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
  font-family: 'Linux Biolinum',sans;
}

h1 {
  font-size: 150%;
  line-height: 110%;
}

h2 {
  font-size: 115%;
}

h3 {
  font-size: 100%;
}

h1 > .anchor, h2 > .anchor, h3 > .anchor, h4 > .anchor, h5 > .anchor, h6 > .anchor {
  float: left;
  margin-left: -30px;
  padding-right: 6px;
  text-decoration: none;
  outline: none;
  font-size: 1.2rem;
}
h1 > .anchor:hover, h2 > .anchor:hover, h3 > .anchor:hover, h4 > .anchor:hover, h5 > .anchor:hover, h6 > .anchor:hover {
  background-color: transparent;
}
h1 > .anchor .fa-solid, h2 > .anchor .fa-solid, h3 > .anchor .fa-solid, h4 > .anchor .fa-solid, h5 > .anchor .fa-solid, h6 > .anchor .fa-solid {
  visibility: hidden;
  color: grey;
}
h1:hover > .anchor .fa-solid, h2:hover > .anchor .fa-solid, h3:hover > .anchor .fa-solid, h4:hover > .anchor .fa-solid, h5:hover > .anchor .fa-solid, h6:hover > .anchor .fa-solid {
  visibility: visible;
}

h1 > a.fa-end {
  margin-left: 1em;
  font-size: 24px;
  vertical-align: middle;
}

a {
  color: #5b6ee1;
  text-decoration: none;
}

a:hover {
  color: #306082;
  background-color: #aaaaaa2c;
}

a:visited {
  color: #306082;
}

pre {
  font-family: "Inconsolata",monospace;
  line-height: 110%;
  min-width: 100%;
  padding: 1rem;
  background-color: #222034;
  color: #deeed6;
  border-radius: 4px;
  display: inline-block;
}

code {
  font-family: "Inconsolata",monospace;
  border-radius: 3px;
  padding: .2em .4em;
  background-color: #1b1f230d;
  color: #6a737d;
}

blockquote {
  padding-left: 2rem;
  border-left: 5px solid #eee;
  font-style: italic;
}

span.new-content {
  content: "";
  border-radius: 100%;
  background-color: teal;
  filter: blur(.15px);
  width: .4em;
  height: .4em;
  display: inline-block;
  margin-left: .2em;
  margin-bottom: .5em;
}

.fa-solid, .fa-brands {
  color: teal;
}

.img-icon {
  width: 1em;
  height: 1em;
  vertical-align: sub;
  margin-right: 0.5em;
}

/* Overall layout */

.container {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

@media (min-width: 1140px) {
  .container {
    margin-left: 14rem;
    margin-right: 4rem;
    max-width: 72rem;
  }
}

@media (min-width: 800px) and (max-width: 1140px) {
  .container {
    margin-left: 6rem;
    margin-right: 4rem;
    max-width: 52rem;
  }
}

@media (max-width: 800px) {
  .container {
    margin-left: 1rem;
    margin-right: 1rem;
  }
}

/* Body */

.body {
  margin-bottom: 40px;
  display: flex;
  gap: 1.5em;
}

@media (max-width: 700px) {
  .body {
    flex-direction: column;
    gap: 0;
  }
}

.sidecontent {
  flex: 0 1 20rem;
  align-self: flex-start;
}

.sidecontent p {
  font-size: 80%;
  line-height: normal;
  margin-bottom: 2em;
}

.sidecontent img {
  max-height: 9rem;
  max-width: 100%;
  display: block;
  margin-bottom: .5em;
}

.sidenav {
  position: sticky;
  align-self: flex-start;

  flex-basis: 160px;
  flex-grow: 0;
  flex-shrink: 0;

  top: 40px;
  margin-top: 20px;

  font-size: smaller;
  font-family: "Linux Biolinum", sans-serif;
  line-height: 1.1;
}

@media (max-width: 700px) {
  .sidenav {
    position: static;
  }
}

.sidenav, .sidenav a, .sidenav a:visited {
  color: #666;
}

.sidenav li {
  margin-top: 14px;
}

.sidenav li:first-child {
  text-transform: uppercase;
}

.sidenav ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
}

.content {
  flex: 1 5 auto;
}

.content iframe {
  width: 94%;
  aspect-ratio: 3/2;
  margin-left: 3%;
}

@media (max-width: 1140px) {
  .content iframe {
    width: 100%;
    margin: 0;
  }
}

/*
 * FIXME: remove when Firefox supports css :has()
 * https://developer.mozilla.org/en-US/docs/Web/CSS/:has
 */
/* .content p:has(img) img */
.content-p-img-tmp {
  display: flex;
  align-items: center;
  flex-direction: column;
  justify-content: space-around;
  gap: 1em;
}

@media (min-width: 800px) {
  /* .content p:has(img) img */
  .content-p-img-tmp {
    flex-direction: row;
  }
}

/* .content p:has(img) img */
.content-p-img-tmp img {
  max-height: 200px;
  width: 100%
}

/* Footer */

footer {
  border-top: 1px solid #ccc;
  font-size: 80%;
  margin: auto 50px 0 50px;
  padding: 0 50px;
}

footer .smallprint {
  color: gray;
}

.cc-button {
  margin-left: 1rem;
  opacity: 60%;
}

@media (max-width: 800px) {
  footer {
    margin-left: 10px;
    margin-right: 10px;
    padding-left: 10px;
    padding-right: 10px;
  }
}

/* Navigation and header */

.avatar {
  margin: 10px;
}

.avatar img {
  vertical-align: top;
  height: 120px;
  width: 120px;
  border-radius: 100%;
  border: 2px solid lightgray;
}

.avatar a:hover {
  background-color: #fff;
}

.nav .name {
  font-size: 30px;
}

.nav {
  display: flex;
  font-family: 'Linux Biolinum',sans;
  padding-top: 1rem;
  padding-bottom: 1rem;
  margin-bottom: 3rem;
  border-bottom: 1px solid #eee;
  gap: 50px;
  align-items: center;
}

.nav ul {
  list-style-type: none;
  display: block;
  margin: 0;
  padding: 10px 0 10px 0;
}

.nav li {
  display: inline;
  padding: 0 1rem;
}

.nav li:first-child {
  padding-left: 0;
}

.nav a {
  display: inline-block;
  color: #000;
}

.nav a:hover {
  color: #000;
}

.nav a:visited {
  color: #000;
}

/* Posts */

.date {
  color: #666;
}

.posts {
  display: grid;
  grid-column-gap: .5em;
  grid-row-gap: .5em;
  grid-auto-columns: auto 1fr;
}

.posts .date {
  grid-column: 1;
}

.posts .title {
  grid-column: 2;
}

@media (max-width: 1140px) {
  .posts {
    grid-row-gap: 0;
  }
  .posts .date {
    grid-column: 1;
  }

  .posts .title {
    grid-column: 1;
    margin-bottom: .5em;;
  }
}


/* Misc */

.fade-text {
  color: #ddd;
}

:target {
  animation: target-fade 5s ease-in;
}

@keyframes target-fade {
  0% { background-color: rgba(255, 255, 0, .3); }
  100% { background-color: default; }
}

object.email {
  vertical-align: middle;
}
object.email:hover {
  background-color: #aaaaaa2c;
}
@media (prefers-color-scheme: dark) {
  object.email:hover {
    /* TODO adapt background-color with svg, using the original transparency */
  }
}

/* Syntax Highlighting */

.syntax-special, .syntax-element {
  color: #8ac6f2;
  font-weight: bold;
}

.syntax-string {
  color: #95e454;
}

.syntax-keyword, .syntax-attribute {
  color: #e5786d;
}

.syntax-comment {
  color: #999;
}

.syntax-open, .syntax-close {
  color: #999;
}
