:root{--colour-light-grey:#eee;--colour-grey:#e7e7e7;--colour-dark-grey:#ddd;--colour-heavy-grey:#777;--colour-black:#000;--colour-white:#fff;--colour-red:#fd6c6c;--colour-blue:#337ab7;--colour-light-black:rgb(0 0 0 / 4%);--colour-purple:#6f42c1;--colour-green:#2cbe4e;--colour-dark-red:#cb2431;--colour-pink:#c9c;--colour-orange:#d27b53;--bg:var(--colour-white);--text:#24292e;--text-muted:var(--colour-heavy-grey);--surface:var(--colour-light-grey);--surface-raised:#fff;--border:var(--colour-dark-grey);--text-shadow:rgb(0 0 0 / 4%);--code-bg:rgb(0 0 0 / 6%)}@media(prefers-color-scheme:dark){:root{--colour-light-grey:#2d333b;--colour-grey:#373e47;--colour-dark-grey:#444c56;--colour-heavy-grey:#8b949e;--colour-black:#f0f6fc;--colour-white:#0d1117;--colour-light-black:rgb(255 255 255 / 6%);--colour-blue:#58a6ff;--colour-purple:#bc8cff;--colour-green:#3fb950;--colour-dark-red:#f85149;--colour-pink:#f778ba;--colour-orange:#d29922;--bg:#0d1117;--text:#c9d1d9;--text-muted:#8b949e;--surface:#161b22;--surface-raised:#161b22;--border:#30363d;--text-shadow:transparent;--code-bg:rgb(255 255 255 / 10%)}}@media(prefers-contrast:more){:root{--text:#000;--bg:#fff;--border:#000}}:root{--font-regular:segoe ui, roboto, source sans pro, helvetica, arial, sans-serif;--font-mono:menlo, monaco, consolas, 'Courier New', monospace}:root{--shadow-border:#7d97ad;--shadow-shadow:rgb(0 0 0 / 0.4%);--shadow-top:rgb(0 0 0 / 16%);--shadow-side:rgb(0 0 0 / 12%)}@media(prefers-color-scheme:dark){:root{--shadow-border:#3b4754;--shadow-shadow:rgb(0 0 0 / 2%);--shadow-top:rgb(0 0 0 / 40%);--shadow-side:rgb(0 0 0 / 30%)}}p{margin-bottom:1rem;margin-top:0}h1{margin-block:1em .5em;font-size:clamp(1.8rem,1.5rem + 1.5vw,2.5rem);font-weight:700;line-height:1.25}h2{margin-block:1em .5em;font-size:clamp(1.35rem,1.15rem + 1vw,1.75rem);font-weight:700;line-height:1.25}h3{margin-block:1em .5em;font-size:clamp(1.15rem,1rem + .5vw,1.4rem);font-weight:700;line-height:1.25}h4{margin-block:1em .5em;font-size:1rem;font-weight:700;line-height:1.25}h5{margin-block:1em .5em;font-size:.875rem;font-weight:700;line-height:1.25}h6{margin-block:1em .5em;font-size:.75rem;font-weight:700;line-height:1.25}pre,code{font-family:inherit;font-size:inherit}.avatar{align-items:center;display:flex;flex-direction:row;& img { border: none; border-radius: 50%; height: 100px; margin-inline-end: 0.5em; overflow: hidden; position: relative; width: 100px; }}.card-list{display:flex;flex-flow:row wrap;& .card-outer { flex: 1 1 20em; margin: 0.5em 1em; max-width: 20em; padding: 0; @media screen and (width <= 846px) { width: 100%; } @media print { margin-bottom: 0; & a::after { content: ''; } } }}.repo-card{background-color:var(--surface-raised);border:1px solid var(--border);border-radius:6px;color:var(--text);display:flex;flex-direction:column;justify-content:space-between;min-height:5em;min-width:12em;padding:.5em .75em;text-decoration:none;transition:border-color .2s;&:hover { border-color:var(--colour-heavy-grey); }}.repo-card-name{align-items:center;color:var(--colour-blue);display:inline-flex;font-size:.8rem;font-weight:630;gap:.3rem;& > svg { color: var(--text-muted); height: 0.9rem; width: 0.9rem; }}.repo-card-description{color:var(--text-muted);display:-webkit-box;font-size:.7rem;line-height:1.4;margin:.3em 0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.repo-card-footer{align-items:center;color:var(--text-muted);display:flex;font-size:.65rem;gap:1em}.repo-card-language{align-items:center;display:inline-flex;gap:.25rem;& > svg { flex-shrink: 0; height: 0.6rem; width: 0.6rem; }}.repo-card-stat{align-items:center;display:inline-flex;gap:.2rem;& > svg { height: 0.7rem; width: 0.7rem; }}.contribution-card{background-color:var(--surface-raised);border:1px solid var(--border);border-radius:6px;color:var(--text);display:flex;flex-direction:column;justify-content:space-between;min-height:5em;min-width:12em;padding:.5em .75em;text-decoration:none;transition:border-color .2s;&:hover { border-color:var(--colour-heavy-grey); }}.contribution-card-repo{align-items:center;color:var(--colour-blue);display:inline-flex;font-size:.7rem;font-weight:630;gap:.3rem;& > svg { color: var(--colour-blue); height: 0.85rem; width: 0.85rem; }}.contribution-card-title{color:var(--text-muted);display:-webkit-box;font-size:.7rem;font-weight:600;line-height:1.4;margin:.3em 0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.contribution-card-footer{align-items:center;color:var(--text-muted);display:flex;font-size:.65rem;gap:.5em}.contribution-card-stars{align-items:center;display:inline-flex;gap:.2rem;& > svg { height: 0.7rem; width: 0.7rem; }}.project-element-state-merged,.project-element-state-closed,.project-element-state-open{align-items:center;border-radius:2em;display:inline-flex;font-size:.6rem;font-weight:600;gap:.2rem;line-height:1;padding:2px 8px;white-space:nowrap;& > svg { height: 0.55rem; width: 0.55rem; }}.project-element-state-merged{background-color:color-mix(in srgb,var(--colour-purple) 15%,transparent);color:var(--colour-purple)}.project-element-state-closed{background-color:color-mix(in srgb,var(--colour-dark-red) 15%,transparent);color:var(--colour-dark-red)}.project-element-state-open{background-color:color-mix(in srgb,var(--colour-green) 15%,transparent);color:var(--colour-green)}.experience{@media print{& .experience-block{break-inside:avoid !important}& .experience-block:nth-child(n+6){display:none}}& h3 a { color: var(--text); }}.footer{@media print{display: none;}align-items:center;display:flex;flex-direction:row;grid-area:footer;justify-content:center;padding-bottom:1em;& a { color: var(--text-muted); text-decoration: none; transition: color 0.2s ease; &:hover { color: var(--text); } }}.github-corner{@media print{display: none;}& svg { border: 0; color: var(--colour-white); fill: var(--colour-red); position: absolute; right: 0; top: 0; & .octo-arm { transform-origin: 130px 106px; } } &:hover { & .octo-arm { animation: octocat-wave 560ms ease-in-out; } }}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media screen and (width <= 846px){.github-corner{& svg { height: 50px; width: 50px; }}}.container{@media print{grid-template-columns: 100% !important; max-width: 100% !important; & .markdown-body{margin:0 !important;padding-top:0 !important;padding-bottom:0 !important;& h2 { font-size: 1.2em !important; } & h3 { font-size: 1em !important; margin: 1em 0 0.8em !important; } & p { font-size: 0.8em !important; margin-bottom: 1em !important; } & blockquote { border-bottom: 0; border-left: 0.25em solid var(--colour-dark-grey); border-right: 0; border-top: 0; color: var(--colour-heavy-grey); font-size: 1em; padding: 0 1em; & h4 { font-size: 0.8em !important; } }}}display:grid;gap:5px 10px;grid-template:'main sidebar' auto 'footer footer' auto/80% 20%;@media screen and (width <= 846px){row-gap: 10px; grid-template: 'sidebar' 'main' 'footer' auto / auto; max-width: 100%;}& .markdown-body { @media screen and (width <= 996px) { margin-inline: 0.5em; } @media screen and (width <= 846px) { margin-inline: 0.5em; max-width: 100%; padding: 0.5em 1em; } @media screen and (width <= 560px) { margin-inline: 0.5em; max-width: 100%; padding: 0.5em; } grid-area: main; margin-inline: auto; min-height: 660px; overflow: visible; padding: 40px 16px; & .wrapper { margin-inline-start: 4em; padding: 40px 16px; @media screen and (width <= 846px) { margin: 0; padding: 0; } @media print { padding: 0; } & .about { display: flex; flex-flow: row wrap; justify-content: space-around; } } &::after { clear: both; } & > :first-child { margin-top: 0; } & > :last-child { margin-bottom: 0; } }}.sidebar{grid-area:sidebar;margin-top:64px;text-align:inherit}.sidebar a{color:var(--colour-heavy-grey) !important}.sidebar .nav>.site-title{font-size:14px;font-weight:600;padding:0 20px 8px;text-decoration:none}.sidebar .nav{display:flex;flex-direction:column;position:fixed}.sidebar .nav li a{display:block;font-size:12px;font-weight:500;padding:0 20px 4px}.sidebar .nav li a:focus,.sidebar .nav li a:hover{background-color:transparent;border-left:1px solid var(--colour-black);color:var(--colour-black);padding-left:19px;text-decoration:none}.sidebar .nav ul{list-style:none;margin:0;padding:0}.sidebar .nav ul>li{margin-left:1em}.sidebar .nav hr{margin:4px}@media screen and (width <= 846px){.sidebar{margin-top:0}.sidebar .nav{align-items:center;border-bottom:1px solid var(--colour-light-grey);flex-flow:row nowrap;gap:0;padding:8px 12px;position:static}.sidebar .nav hr,.sidebar .nav>nav{display:none}.sidebar .nav ul{display:flex;flex-flow:row nowrap;gap:0;margin-left:0}.sidebar .nav ul>li{margin-left:0}.sidebar .nav li a{padding:4px 10px;white-space:nowrap}.sidebar .nav li a:focus,.sidebar .nav li a:hover{border-left:none;padding-left:10px;text-decoration:underline}.sidebar .nav>.site-title{font-size:14px;padding:4px 10px 4px 0;white-space:nowrap}}@media screen and (width <= 560px){.sidebar .nav li a{padding:4px 8px;font-size:11px}}@media print{.sidebar{display:none}}.social{list-style:none;margin:0 auto;width:fit-content;display:flex;flex-wrap:wrap;padding-inline-start:0;@media print{margin-bottom: 0.5em !important;}& a { display: block; margin: 0 1px 0 0; padding: 10px 12px; text-decoration: none; @media print { margin: 0; padding: 0.5em 0.75em; } & .label { border-radius: 0.25em; color: var(--colour-blue); display: inline; font-family: var(--font-regular); font-size: 75%; font-weight: 700; line-height: 1; padding: 0.2em 0.6em 0.3em; text-align: center; vertical-align: baseline; white-space: nowrap; @media print { margin-left: 0.5em !important; } } } & svg { height: 1em; width: auto; vertical-align: -0.125em; } & > li { display: inline-flex; &:last-child { & a { margin-right: 0; } } }}.about-icons{display:flex;justify-content:center;gap:0;& .social-icon-link { position: relative; display: inline-block; font-size: 1.333em; width: 2.5em; height: 2em; line-height: 2em; text-align: center; text-decoration: none; color: var(--colour-heavy-grey); transition: color 0.2s ease; &:hover { color: var(--colour-blue); } } & .social-icon-bg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 2em; & svg { height: 1em; width: auto; } } & .social-icon-fg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 1em; color: #fff; & svg { height: 1em; width: auto; } } @media print { display: none; }}.excerpt{margin-bottom:.75rem;padding:.75rem;@media screen and (width >= 846px){padding: 1rem; width: 100%;}@media screen and (width >= 996px){padding: 1.5rem; width: 100%;}& .meta { display: flex; flex-wrap: wrap; gap: 0.25em; margin-bottom: 0.5rem; & .key { color: var(--colour-heavy-grey); &::after { content: '\A0'; } } & .value { color: var(--colour-pink); } } & .headline { font-size: 2em; margin-top: 0; } & .article { & a { color: var(--colour-orange); } }}.post{& * { max-width: 100%; } & .meta { font-size: 0.9em; text-align: right; & .key { color: var(--colour-heavy-grey); &::after { content: '\A0'; } } & .value { color: var(--colour-pink); } } & .headline { font-size: 3em; margin-top: 1em; }}*::-moz-focus-inner{border:0}:focus-visible{outline:2px solid var(--colour-blue);outline-offset:2px}body{-webkit-font-smoothing:subpixel-antialiased;-webkit-overflow-scrolling:touch;background-color:var(--bg);border-top:6px solid var(--colour-red);color:var(--text);color-scheme:light dark;font-family:var(--font-regular);font-size:16px;letter-spacing:.025em;line-height:1.5;margin:0;scroll-behavior:smooth;text-shadow:0 0 1em transparent,1px 1px 1.2px var(--text-shadow);overflow-wrap:break-word;& p { margin: 0 0 10px; } & blockquote, & p, & ul { margin-bottom: 16px; margin-top: 0; } & hr { background-color: var(--colour-grey); border: 0; border-top: 1px solid var(--colour-grey); box-sizing: content-box; height: 0; margin-bottom: 20px; margin-top: 20px; padding: 0; @media print { display: none; } } & a { color: var(--colour-blue); text-decoration: none; } & h1 { font-size: 2em; font-weight: 600; line-height: 1.25; margin-bottom: 16px; margin-top: 24px; border-bottom: 1px solid var(--colour-light-grey); padding-bottom: 0.3em; @media print { margin-bottom: 0; margin-top: 0; } } & h2 { font-size: 1.5em; font-weight: 600; line-height: 1.25; margin-bottom: 16px; margin-top: 24px; border-bottom: 1px solid var(--colour-light-grey); padding-bottom: 0.3em; } & h3 { font-size: 1.25em; font-weight: 600; line-height: 1.25; margin-bottom: 16px; margin-top: 24px; & small { color: var(--colour-heavy-grey); font-size: 65%; font-weight: 400; line-height: 1; } } & h4 { font-size: 1em; font-weight: 600; line-height: 1.25; margin-bottom: 16px; margin-top: 24px; } & blockquote { border-left: 0.25em solid var(--colour-dark-grey); color: var(--colour-heavy-grey); font-size: 17.5px; margin: 0 0 20px; padding: 0 1em; & > :first-child { margin-top: 0; } & > :last-child { margin-bottom: 0; } & h4 { margin: 8px; } } & ul { padding-left: 2em; } & img { background-color: transparent; box-sizing: content-box; max-width: 100%; vertical-align: middle; } & code { background-color: var(--code-bg); border-radius: 3px; color: inherit; font-family: var(--font-mono); font-size: 0.8em; margin: 0; padding: 0.2em 0; &::after, &::before { content: '\A0'; letter-spacing: -0.2em; } } & pre { background-color: var(--code-bg); font-family: var(--font-mono); overflow: auto; padding: 0.5em 1em; & code { background: none; border: 0; font-size: calc(0.8em * 0.875); letter-spacing: normal; line-height: 1em; word-break: break-all; &::after, &::before { content: ''; } } } @media print { border-top: 0 !important; font-size: 12px; line-height: 1.4; & a { font-family: var(--font-regular); &::after { content: ' (' attr(href) ') '; font-size: 0.8em; font-weight: normal; } } @page { margin: 0.8cm; } & div, & img { break-inside: avoid !important; } }}.skip-link{position:absolute;top:-100%;left:0;z-index:1000;padding:.5em 1em;background-color:var(--colour-blue);color:var(--colour-white);text-decoration:none;font-weight:600;&:focus { top:0; }}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}