@layer reset, packages, theme, components;
@layer reset {
  html {
    color-scheme: light dark;
    text-wrap: pretty;
  }
  body {
    margin: 0;
  }
  h1, h2, h3, h4, h5, h6 {
    text-wrap: balance;
  }
  img {
    display: block;
    max-width: 100%;
  }
}
@layer theme {
  .layout {
    display: grid;
    grid-template-columns: 1ch [full-start bleed-left-start] calc(2rem - 1ch) 1fr [main-start bleed-right-start] minmax(auto, 80ch) [main-end bleed-left-end] 1fr calc(2rem - 1ch) [full-end bleed-right-end] 1ch;
  }
  .layout > * {
    grid-column: main;
  }
  @media (prefers-color-scheme: light) {
    :root,
    ::backdrop {
      --bg-primary: #eeeeee;
      --colour-primary: #333333;
      --colour-primary--low: #777777;
      --bg-secondary: #dddddd;
      --colour-secondary: #333333;
      --colour-link: #4444dd;
    }
  }
  @media (prefers-color-scheme: dark) {
    :root,
    ::backdrop {
      --bg-primary: #111111;
      --colour-primary: #ffffff;
      --colour-primary--low: #888888;
      --bg-secondary: #333333;
      --colour-secondary: #ffffff;
      --colour-link: #9999ff;
    }
  }
  @media (prefers-color-scheme: light) {
    html {
      color-scheme: light;
    }
  }
  @media (prefers-color-scheme: dark) {
    html {
      color-scheme: dark;
    }
  }
  html {
    background: var(--bg-primary);
    color: var(--colour-primary);
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/roboto/roboto-regular.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 400;
    font-style: italic;
    src: url("/assets/fonts/roboto/roboto-italic.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 700;
    font-style: normal;
    src: url("/assets/fonts/roboto/roboto-bold.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 700;
    font-style: italic;
    src: url("/assets/fonts/roboto/roboto-bolditalic.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/nunito/nunito-bold.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto Mono";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/roboto-mono/robotomono-regular.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: italic;
    src: url("/assets/fonts/nunito/nunito-bolditalic.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/nunito/nunito-black.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: italic;
    src: url("/assets/fonts/nunito/nunito-blackitalic.woff2") format("woff2");
    font-display: auto;
  }
  html {
    font-family: "Roboto", "Helvetica", sans-serif;
    font-size: 14px;
  }
  @media (768px <= width) {
    html {
      font-size: 16px;
    }
  }
}
@layer components {
  @media (prefers-color-scheme: light) {
    :root,
    ::backdrop {
      --bg-primary: #eeeeee;
      --colour-primary: #333333;
      --colour-primary--low: #777777;
      --bg-secondary: #dddddd;
      --colour-secondary: #333333;
      --colour-link: #4444dd;
    }
  }
  @media (prefers-color-scheme: dark) {
    :root,
    ::backdrop {
      --bg-primary: #111111;
      --colour-primary: #ffffff;
      --colour-primary--low: #888888;
      --bg-secondary: #333333;
      --colour-secondary: #ffffff;
      --colour-link: #9999ff;
    }
  }
  @media (prefers-color-scheme: light) {
    html {
      color-scheme: light;
    }
  }
  @media (prefers-color-scheme: dark) {
    html {
      color-scheme: dark;
    }
  }
  html {
    background: var(--bg-primary);
    color: var(--colour-primary);
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/roboto/roboto-regular.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 400;
    font-style: italic;
    src: url("/assets/fonts/roboto/roboto-italic.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 700;
    font-style: normal;
    src: url("/assets/fonts/roboto/roboto-bold.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto";
    font-weight: 700;
    font-style: italic;
    src: url("/assets/fonts/roboto/roboto-bolditalic.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/nunito/nunito-bold.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Roboto Mono";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/roboto-mono/robotomono-regular.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: italic;
    src: url("/assets/fonts/nunito/nunito-bolditalic.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: normal;
    src: url("/assets/fonts/nunito/nunito-black.woff2") format("woff2");
    font-display: auto;
  }
  @font-face {
    font-family: "Sono";
    font-weight: 400;
    font-style: italic;
    src: url("/assets/fonts/nunito/nunito-blackitalic.woff2") format("woff2");
    font-display: auto;
  }
  html {
    font-family: "Roboto", "Helvetica", sans-serif;
    font-size: 14px;
  }
  @media (768px <= width) {
    html {
      font-size: 16px;
    }
  }
  article {
    row-gap: 2rem;
    padding-block: min(5rem, 5vw);
    --inset-padding: 2ch;
  }
  @media (768px <= width) {
    article {
      --inset-padding: 5ch;
    }
  }
  article > * {
    margin: 0;
  }
  article h1 {
    font-family: "Sono";
    font-size: 2.4rem;
    line-height: 1.5;
    grid-column: bleed-right;
  }
  article h2 {
    font-family: "Sono";
    font-size: 1.8rem;
    line-height: 1.5;
    grid-column: bleed-right;
    margin-top: 2rem;
  }
  article h3 {
    font-family: "Sono";
    font-size: 1.6rem;
    line-height: 1.4;
    margin-top: 2rem;
  }
  article h4 {
    font-family: "Sono";
    font-size: 1.2rem;
    line-height: 1.4;
    margin-top: 2rem;
  }
  article p,
  article blockquote,
  article ul,
  article ol,
  article table,
  article figcaption {
    font-family: "Roboto", "Helvetica", sans-serif;
    font-size: 1.2rem;
    line-height: 1.5;
  }
  article a {
    color: var(--colour-link);
  }
  @supports (background-clip: text) {
    article a {
      background: linear-gradient(270deg, var(--colour-primary), var(--colour-primary) 33%, var(--colour-link) 67%, var(--colour-link));
      background-size: 300% 100%;
      background-position: 100% 0;
      background-clip: text;
      color: transparent;
      text-decoration-thickness: 2px;
      text-decoration-color: var(--colour-link);
    }
    @media (prefers-reduced-motion: no-preference) {
      article a {
        transition: background-position 0.4s ease-in-out;
      }
    }
    article a:hover, article a:focus {
      background-position: 0 0;
    }
  }
  @media print {
    article a {
      background-clip: initial;
      color: currentColor;
      background: transparent;
    }
  }
  article code {
    font-family: "Roboto Mono", monospace;
    font-size: 1.2rem;
    line-height: 1.5;
  }
  article p code:not(a code) {
    display: inline-block;
    background: var(--bg-secondary);
    color: var(--colour-secondary);
    padding-inline: 0.5ch;
    border-radius: 0.5ch;
    word-break: break-word;
  }
  article pre {
    overflow: auto;
  }
  article pre code {
    display: block;
    max-width: max-content;
    overflow: auto;
    padding: 1ch;
    border-radius: 1ch;
    tab-size: 4;
    background: var(--bg-secondary);
    color: var(--colour-secondary);
  }
  article blockquote {
    margin-inline: 0;
    padding-left: var(--inset-padding);
    position: relative;
  }
  article blockquote::before {
    content: "";
    position: absolute;
    inset-block: 0;
    left: 0;
    width: 0.5ch;
    background: var(--bg-secondary);
    color: var(--colour-secondary);
  }
  article blockquote > :first-child {
    margin-top: 0;
  }
  article blockquote > :last-child {
    margin-bottom: 0;
  }
  article figure {
    padding: 1em;
    border-radius: 1em;
    background: var(--bg-secondary);
    color: var(--colour-secondary);
  }
  article ul,
  article ol {
    padding-inline-start: var(--inset-padding);
  }
  article table {
    border-collapse: collapse;
  }
  article table th, article table td {
    text-align: left;
    vertical-align: top;
    padding: 0.5ex 1ch;
  }
  article table tbody tr:nth-child(odd) {
    background: var(--bg-secondary);
  }
  .article__meta {
    font-style: italic;
    font-size: 1rem;
    background: var(--bg-primary);
    color: var(--colour-primary--low);
  }
  .header-link {
    position: absolute;
    transform: translateX(-99.9%);
    background: var(--colour-link);
    background-clip: text;
    color: transparent;
    text-decoration: none;
    line-height: 1lh;
    opacity: 0.75;
    transition: opacity 0.3s ease-in-out;
  }
  .header-link:hover, .header-link:focus {
    opacity: 1;
  }
  .table-of-contents {
    grid-column: bleed-right;
    list-style: none;
    padding: 0;
    font-family: "Sono";
    font-size: 1.2rem;
    line-height: 1.4;
    display: flex;
    flex-direction: column;
    gap: 0.3em;
  }
  .table-of-contents > li::before {
    content: ">";
    margin-right: 1ch;
  }
}

/*# sourceMappingURL=article.css.map */
