@font-face {
    font-family: 'Jetbrains';
    font-style: normal;
    font-display: swap;
    font-weight: 500;
    src: url('/assets/fonts/JetBrainsMono-Regular.woff2') format('woff2'),
        url('/assets/fonts/JetBrainsMono-Thin.woff2') format('woff');
}

html {
    font-family: Jetbrains;
    -ms-text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
    display: block;
}

audio,
canvas,
progress,
video {
    display: inline-block;
    vertical-align: baseline;
}

audio:not([controls]) {
    display: none;
    height: 0;
}

[hidden],
template {
    display: none !important;
}

a {
    background-color: transparent;
}

b,
strong {
    font-weight: 700;
}

dfn {
    font-style: italic;
}

mark {
    background: #ff0;
    color: #000;
}

small {
    font-size: 80%;
}

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sup {
    top: -0.5em;
}

sub {
    bottom: -0.25em;
}

img {
    border: 0;
}

svg:not(:root) {
    overflow: hidden;
}

figure {
    margin: 0;
}

hr {
    box-sizing: content-box;
    height: 0;
}

pre {
    overflow: auto;
}

code,
kbd,
pre,
samp {
    font-family: Jetbrains, Jetbrains;
    font-size: 1em;
}

button,
input,
optgroup,
select,
textarea {
    color: inherit;
    font: inherit;
    margin: 0;
}

button {
    overflow: visible;
}

button,
select {
    text-transform: none;
}

button,
html input[type='button'],
input[type='reset'],
input[type='submit'] {
    -webkit-appearance: button;
    cursor: pointer;
}

button[disabled],
html input[disabled] {
    cursor: default;
}

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0;
}

input {
    line-height: normal;
}

input[type='checkbox'],
input[type='radio'] {
    box-sizing: border-box;
    padding: 0;
}

input[type='number']::-webkit-inner-spin-button,
input[type='number']::-webkit-outer-spin-button {
    height: auto;
}

input[type='search'] {
    -webkit-appearance: textfield;
    box-sizing: content-box;
}

input[type='search']::-webkit-search-cancel-button,
input[type='search']::-webkit-search-decoration {
    -webkit-appearance: none;
}

textarea {
    overflow: auto;
}

optgroup {
    font-weight: 700;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

td,
th {
    padding: 0;
}

html {
    box-sizing: border-box;
    overflow-y: scroll;
}

*,
::after,
::before {
    box-sizing: inherit;
}

@-moz-viewport {
    width: device-width;
}

@-ms-viewport {
    width: device-width;
}

@-o-viewport {
    width: device-width;
}

@-webkit-viewport {
    width: device-width;
}

@viewport {
    width: device-width;
}

html {
    font-size: 100%;
    -webkit-tap-highlight-color: transparent;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
        Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
        sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
    font-size: 1rem;
    line-height: 1.625;
    color: #373a3c;
    color: var(--text-color, #373a3c);
    background-color: #fff;
    -ms-text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
}

abbr[data-original-title],
abbr[title] {
    cursor: help;
}

dl,
ol {
    padding: 0;
    margin: 0;
    list-style-type: none;
}

ul {
    padding: 0;
    margin: 0;
}

pre {
    margin: 0;
}

img {
    vertical-align: middle;
}

[role='button'] {
    cursor: pointer;
}

[role='button'],
a,
area,
button,
input,
label,
select,
summary,
textarea {
    touch-action: manipulation;
}

th {
    text-align: left;
}

label {
    display: inline-block;
    margin: 0;
}

button,
input,
select,
textarea {
    margin: 0;
    line-height: inherit;
    border-radius: 0;
}

textarea {
    resize: vertical;
}

fieldset {
    min-width: 0;
    padding: 0;
    margin: 0;
    border: 0;
}

legend {
    display: block;
    width: 100%;
    padding: 0;
    margin-bottom: 0.5rem;
    font-size: 1.5rem;
    line-height: inherit;
    border: 0;
}

input[type='search'] {
    box-sizing: inherit;
    -webkit-appearance: none;
}

::selection {
    background: #333;
    background: var(--primary-color, #333);
    color: #fff;
}

::-moz-selection {
    background: #333;
    background: var(--primary-color, #333);
    color: #fff;
}

body {
    overflow-x: hidden;
}

.layout {
    min-height: 100%;
    min-height: 100vh;
    position: relative;
}

.layout .header {
    grid-area: header;
    padding: 2rem 0;
}

.layout .main {
    grid-area: main;
}

.layout .sidebar {
    grid-area: sidebar;
    background-color: #333;
    background-size: 600%;
    background-position: 0 0;
    background-image: radial-gradient(
        circle,
        #1e90ff 0,
        #e2f1ff,
        #007df6,
        #6cb7ff,
        #2dafe6,
        #0069cf 100%
    );
    animation-duration: 14s;
    animation-iteration-count: infinite;
    animation-name: gradients;
}

.layout .footer {
    grid-area: footer;
    padding: 2rem 0;
    background-color: #eceeef;
}

@media all and (min-width: 940px) {
    .layout {
        display: grid;
        grid-template-columns: 25% 1fr;
        grid-template-rows: auto 1fr auto;
        grid-template-areas: 'sidebar header' 'sidebar main' 'sidebar footer';
    }
}

.container {
    padding-left: 5%;
    padding-right: 5%;
    max-width: 1200px;
}

@media all and (min-width: 940px) {
    .container {
        padding-left: 7%;
        padding-right: 7%;
    }
}

.grid {
    display: grid;
    column-gap: 4rem;
    page-break-inside: avoid;
}

.grid--2col {
    grid-template-columns: 1fr 1fr;
}

@keyframes gradients {
    0% {
        background-position: 0 0;
    }

    25% {
        background-position: 50% 0;
    }

    50% {
        background-position: 90% 0;
    }

    60% {
        background-position: 60%;
    }

    75% {
        background-position: 40%;
    }

    100% {
        background-position: 0 0;
    }
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin: 0;
    line-height: 1.2;
    font-family: Jetbrains, Georgia, Times, serif;
    font-weight: 500;
    text-rendering: optimizeLegibility;
}

h1 {
    font-size: 3.5rem;
    line-height: 1;
}

@media all and (min-width: 940px) {
    h1 {
        font-size: 4.5rem;
    }
}

h2 {
    font-size: 2.5rem;
}

h3 {
    font-size: 1.75rem;
}

p {
    margin: 0;
}

a {
    text-decoration: none;
    text-decoration-skip-ink: auto;
    text-decoration-thickness: from-font;
    color: #333;
    color: var(--primary-color, #333);
}

a:focus,
a:hover {
    text-decoration: underline;
}

.lead {
    font-size: 1.25rem;
    font-weight: 300;
    line-height: 1.5;
    max-width: 60ch;
}

@media all and (min-width: 670px) {
    .lead {
        font-size: 1.5rem;
    }
}

a:focus,
button:focus,
input:focus {
    outline: 5px solid purple;
    outline: 5px solid var(--secondary-color, purple);
}

.js-focus-visible :focus:not(.focus-visible) {
    outline: 0;
}

[tabindex='-1']:focus {
    outline: 0 !important;
}

.sr-skip-link:focus {
    outline: 0;
}

a:focus:hover {
    outline: 0;
}

.utl-mt0 {
    margin-top: 0 !important;
}

.utl-mt1 {
    margin-top: 1rem !important;
}

.utl-mt2 {
    margin-top: 2rem !important;
}

.utl-mt3 {
    margin-top: 3rem !important;
}

.utl-mt4 {
    margin-top: 4rem !important;
}

.utl-mb0 {
    margin-bottom: 0 !important;
}

.utl-mb1 {
    margin-bottom: 1rem !important;
}

.utl-mb2 {
    margin-bottom: 2rem !important;
}

.utl-mb3 {
    margin-bottom: 3rem !important;
}

.utl-mb4 {
    margin-bottom: 4rem !important;
}

.utl-space-between {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}

.utl-align-left {
    text-align: left !important;
}

.utl-align-center {
    text-align: center !important;
}

.utl-align-right {
    text-align: right !important;
}

@media print {
    .utl-screen-only {
        display: none !important;
    }
}

@media not print {
    .utl-print-only {
        display: none !important;
    }
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.sr-only-focusable:active,
.sr-only-focusable:focus {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip: auto;
    white-space: normal;
}

.sr-skip-link {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
        Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
        sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
}

.sr-skip-link:active,
.sr-skip-link:focus {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip: auto;
    white-space: normal;
}

.sr-skip-link:focus {
    position: absolute;
    z-index: 9999;
    left: 50%;
    top: 0;
    font-size: 1rem;
    transform: translateX(-50%);
    background-color: #373a3c;
    color: #fff;
    border-radius: 0 0 0.5rem 0.5rem;
    padding: 1rem 1.5rem;
    outline: 0;
    white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 10ms !important;
        transition-duration: 10ms !important;
    }
}

.vcard {
    display: flex;
    flex-wrap: wrap;
    position: relative;
}

.vcard__content {
    padding-top: 1rem;
}

.vcard__title {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
}

.vcard__subtitle {
    margin-bottom: 1rem;
}

.vcard__avatar {
    width: 11rem;
    height: 11rem;
    flex: 0 0 11rem;
    border-radius: 50%;
    border: 5px solid #fff;
    box-shadow: 8px 8px 40px -10px rgba(0, 0, 0, 0.3);
    margin-right: 2rem;
}

.vcard__pronouns {
    font-size: 1.125rem;
    font-family: Jetbrains, Georgia, Times, serif;
    color: #818a91;
}

.vcard__link {
    display: flex;
    align-items: center;
    margin-right: 1rem;
}

.vcard__link:focus,
.vcard__link:hover {
    text-decoration: none;
}

.vcard__link:focus .vcard__link-text,
.vcard__link:hover .vcard__link-text {
    text-decoration: underline;
}

.vcard__link .icon {
    margin-right: 0.125em;
}

@media all and (min-width: 670px) {
    .vcard__social {
        display: flex;
        flex-wrap: wrap;
    }

    .vcard__social .vcard__link {
        margin-bottom: 0.4em;
    }

    .vcard__link {
        display: inline-flex;
    }
}

@media all and (min-width: 940px) {
    .vcard {
        padding: 2rem 0;
    }

    @supports (display: grid) {
        .vcard__avatar {
            position: fixed;
            top: calc(2rem + 1rem);
            right: 75%;
            transform: translateX(25%);
            transition: transform 0.2s ease;
            margin: 0;
        }

        .js-scrolled .vcard__avatar {
            transform: translateX(25%) scale(0.75);
        }
    }
}

.section {
    padding-top: 2rem;
    padding-bottom: 2rem;
    page-break-inside: avoid;
}

.section__title {
    margin-bottom: 2rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid #818a91;
}

.grid .section {
    grid-column: span 2;
}

@media print, all and (min-width: 670px) {
    .grid .section--half {
        grid-column: span 1;
    }
}

.entry__header {
    display: flex;
    flex-direction: column;
}

.entry__header:not(:last-child) {
    margin-bottom: 0.5rem;
}

.entry__time {
    color: #818a91;
    font-size: 0.875rem;
    letter-spacing: 0.125em;
    text-transform: uppercase;
    order: -1;
    margin-bottom: 0.25rem;
}

.entry__organization {
    font-size: 1.125rem;
}

.entry__content {
    max-width: 60ch;
}

.entry__content * > * {
    margin-top: 1em;
}

.entrylist {
    position: relative;
    padding-left: 1rem;
}

.entrylist::before {
    content: '';
    display: block;
    width: 1px;
    background: #818a91;
    background: linear-gradient(
        to top,
        rgba(129, 138, 145, 0) 0,
        #818a91 100px,
        #818a91 100%
    );
    position: absolute;
    top: 2.25rem;
    left: 1rem;
    bottom: 0;
}

.entrylist > * + * {
    margin-top: 2rem;
}

.entrylist__item {
    position: relative;
    padding-left: 2rem;
}

.entrylist__item::before {
    content: '';
    display: block;
    width: 0.625rem;
    height: 0.625rem;
    border-radius: 50%;
    background-color: purple;
    background-color: var(--secondary-color, purple);
    position: absolute;
    top: 2.25rem;
    left: 0;
    transform: translate(-50%, 0);
}

.entrylist h4 {
    margin: 2rem auto 1rem;
}

.entrylist h4 + ul {
    display: grid;
    grid-template-columns: 1fr 1fr;
    list-style-type: disc;
    margin-left: 2rem;
}

.entrylist h4 + ul li {
    margin-top: 0;
}

.bulletlist,
.markdown ul {
    list-style: none;
    padding-left: 1.5em;
}

.bulletlist li,
.markdown ul li {
    position: relative;
}

.bulletlist li::before,
.markdown ul li::before {
    content: '';
    display: block;
    width: 0.5em;
    height: 0.5em;
    border-radius: 50%;
    background-color: purple;
    background-color: var(--secondary-color, purple);
    transform: translate(-50%, 20%);
    position: absolute;
    top: 0.5em;
    left: -1em;
}

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

.actions__btn {
    border: 0;
    padding: 0;
    /* background-color: transparent;
    -webkit-appearance: none; */
    display: flex;
    justify-content: center;
    align-items: center;
    width: 3rem;
    height: 3rem;
    margin: 1rem;
    background-color: transparent;
    border-radius: 50%;
    color: #fff;
}

.actions__btn:focus,
.actions__btn:hover {
    background-color: rgba(0, 0, 0, 0.25);
}

@media all and (min-width: 940px) {
    .actions {
        display: none;
        flex-direction: column;
        position: fixed;
        top: 220px;
        right: 75%;
        padding: 0 0.5rem;
        text-align: right;
    }

    .actions__btn {
        margin: 0.5rem 1rem;
    }

    .js-scrolled .actions {
        display: block;
    }
}

.has-tooltip[aria-label] {
    position: relative;
}

.has-tooltip[aria-label]::after {
    display: block;
    content: attr(aria-label);
    width: auto;
    position: absolute;
    z-index: -1;
    bottom: 100%;
    left: 50%;
    padding: 0.25rem 0.5rem;
    font-size: 0.75rem;
    white-space: nowrap;
    line-height: 1;
    color: #fff;
    background-color: #000;
    border-radius: 0.25rem;
    opacity: 0;
    transform: translate(-50%, 0);
    transition: all 0.2s ease;
    pointer-events: none;
}

.has-tooltip[aria-label]:hover::after {
    display: block;
    opacity: 1;
    z-index: 100;
    transform: translate(-50%, -0.25rem);
}

.markdown > * + * {
    margin-top: 1rem;
}

.markdown a {
    word-wrap: break-word;
    overflow-wrap: break-word;
    hyphens: auto;
}

.markdown img {
    max-width: 100%;
    height: auto;
}

.markdown ol {
    list-style-type: decimal;
    padding-left: 1.375rem;
}

.icon {
    display: inline-block;
    font-size: 1.5em;
    height: 1em;
    width: 1em;
    vertical-align: middle;
    fill: currentColor;
    pointer-events: none;
}

@media all and (min-width: 940px) {
    .repo-link {
        display: block;
        position: fixed;
        top: 0;
        right: 0;
        width: 120px;
        height: 120px;
        overflow: hidden;
    }

    .repo-link > span {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        width: 100px;
        height: 100px;
        position: absolute;
        top: 0;
        right: 0;
        transform-origin: 50% 50%;
        transform: rotate(45deg) translateY(-20px);
        color: #fff;
    }

    .repo-link::before {
        content: '';
        display: block;
        width: 0;
        height: 0;
        border-style: solid;
        border-width: 0 120px 120px 0;
        border-color: transparent #000 transparent transparent;
        position: absolute;
        top: 0;
        right: 0;
    }
}

@media print {
    @page {
        margin: 1cm 3cm;
    }

    :root {
        --text-color: #000000;
    }

    body,
    html {
        width: 100%;
        min-height: 100%;
        font-size: 10px !important;
        overflow: visible;
    }

    *,
    :after,
    :before {
        box-shadow: none !important;
        text-shadow: none !important;
        transition: none !important;
    }

    h2,
    h3,
    p {
        orphans: 3;
        widows: 3;
    }

    h1,
    h2,
    h3 {
        page-break-after: avoid;
    }

    .layout {
        display: block;
    }

    .container {
        max-width: none !important;
        padding-left: 0;
        padding-right: 0;
    }

    .header {
        padding: 0 !important;
    }

    .sidebar {
        display: none !important;
    }

    .footer {
        background: 0 0 !important;
    }

    .section {
        page-break-inside: auto;
    }

    .section__title {
        border-color: #b5b5b5;
    }

    .vcard__avatar {
        position: static !important;
        transform: none !important;
        margin: 0 2rem 0 0 !important;
        border: 0;
    }

    .entry__content {
        max-width: 110ch;
    }

    .bulletlist li::before,
    .entrylist::before,
    .entrylist__item::before,
    .markdown ul li::before {
        color-adjust: exact !important;
        -webkit-print-color-adjust: exact !important;
    }
}
