@import "/css/highlight.js/atom-one-light.css" screen;
@import "/css/highlight.js/atom-one-dark.css" screen and
  (prefers-color-scheme: dark);

:root {
  /* COMPONENTS */
  /* Blockquote */
  --blockquote--border-color: var(--color--accent);
  --blockquote--border-width: var(--size--half);
  --blockquote--padding-x: var(--size--2);
  --blockquote--padding-y: var(--size--1);
  /* Images gallery */
  --gallery--oversize-percent: 0.25;
  --gallery--oversize: calc(
    var(--main-text--max-width) * var(--gallery--oversize-percent)
  );
  --gallery--max-width: calc(
    var(--main-text--max-width) + calc(2 * var(--gallery--oversize))
  );
  /* Code block */
  --code--font: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
    Bitstream Vera Sans Mono, Courier New, monospace;
  --code-block--bg: light-dark(#fafafa, #282c34);
  /* --code-block--bg: #282c34; */
  --code-block--padding: var(--size--1);
  --code-inline--bg: light-dark(
    var(--color--light-gray),
    var(--color--dark-gray)
  );
  /* Images (single) */
  --image--border-color: light-dark(
    var(--color--light-gray),
    var(--color--dark-gray)
  );
  --image--padding-x: var(--size--1);
  --image--padding-y: var(--size--half);
  --image--gap-caption: var(--size--half);
}

@layer post {
  article.post {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: var(--reponsive-cover-max-width);
    header {
      width: var(--reponsive-cover-max-width);
      section {
        width: var(--reponsive-main-text-max-width);
        margin: auto;
        padding: 0 var(--size--2);
      }
      section.title {
        h1 {
          font-size: 4rem;
          @media (width < 700px) {
            font-size: 2rem;
          }
        }
      }
      section.metadata {
        & > * {
          text-wrap: nowrap;
        }
        margin-bottom: var(--size--2);
        display: flex;
        flex-wrap: wrap;
        gap: var(--size--half) var(--size--4);
      }
      section.cover {
        padding: 0;
        width: 100%;

        img {
          width: 100%;
          max-height: min(60vh, 55ch);
          object-fit: cover;
        }
      }
    }
    main {
      max-width: var(--reponsive-main-text-max-width);
      @media (width < 100ch) {
        margin-left: 1rem;
        margin-right: 1rem;
      }
      & > * {
        max-width: var(--reponsive-main-text-max-width);
        margin: var(--main-text--p-gap) 0;
      }
      h1,
      h2,
      h3,
      h4,
      h5,
      h6 {
        a,
        a:active,
        a:visited {
          text-decoration: initial;
        }
        a:hover {
          font-weight: inherit;
        }
        margin-left: -2ex;
        padding-left: 2ex;
        position: relative;

        @media (width >= 120ch) {
          a.anchor {
            position: absolute;
            top: 0;
            left: 0;
            text-decoration: none;
            font-size: 1.5ex;
            visibility: hidden;
          }
          &:hover .anchor {
            visibility: unset;
          }
        }
      }
      blockquote {
        border-left: var(--blockquote--border-width) solid
          var(--blockquote--border-color);
        margin-left: 0;
        margin-right: 0;
        /* 0.1px padding to avoid margin+padding collapse */
        padding: 0.1px var(--blockquote--padding-x);
        font-style: italic;

        & > *:first-child {
          margin-top: var(--blockquote--padding-y);
        }
        & > *:last-child {
          margin-bottom: var(--blockquote--padding-y);
        }
      }
      :not(pre) code {
        background-color: var(--code-inline--bg);
        font-family: var(--code--font);
      }
      pre:has(code) {
        background-color: var(--code-block--bg);
        padding: var(--code-block--padding);
        position: relative;
        overflow-x: auto;
        &:has(code div.language-tag) {
          padding-bottom: 2em;
        }
        code {
          font-family: var(--code--font);

          div.language-tag {
            position: absolute;
            right: var(--size--1);
            bottom: var(--size--1);
          }
        }
      }

      figure:not(.marked-image-gallery) {
        border: 1px solid var(--image--border-color);
        display: flex;
        flex-direction: column;
        gap: var(--image--gap-caption);
        align-items: center;
        width: fit-content;
        margin: auto;
        padding: var(--image--padding-y) var(--image--padding-x);
      }
      figure.marked-image-gallery {
        border: 1px solid var(--image--border-color);
        padding: var(--image--padding-y) var(--image--padding-x);
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        align-items: center;
        gap: var(--size--half);
        img {
          flex: 1 1 45%;
          max-width: calc(50% - var(--size--quarter));
          height: fit-content;
          object-fit: contain;

          @media (width < 700px) {
            flex: 1 1 80%;
            max-width: 100%;
          }
        }
        figcaption {
          flex: 1 1 100%;
          text-align: center;
          margin-top: var(--image--gap-caption);
        }
      }
      p:has(a:first-child:last-child img:first-child:last-child) {
        display: grid;
        a {
          place-self: center;
        }
      }
    }
  }
}
