@import"https://fonts.googleapis.com/css?family=Bebas+Neue";@import"https://fonts.googleapis.com/css?family=Jost";@font-face{font-family:Product Sans;src:url("/assets/Product Sans Regular-b34cbb71.ttf");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Product Sans Bold;src:url("/assets/Product Sans Bold-8dbeee80.ttf");font-weight:475;font-style:normal;font-display:swap}@font-face{font-family:Product Sans Italic;src:url("/assets/Product Sans Italic-3b9b65a5.ttf");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Product Sans Bold Italic;src:url("/assets/Product Sans Bold Italic-b6fbe4c2.ttf");font-weight:700;font-style:italic;font-display:swap}#root{width:100%}*{font-family:Product Sans,serif}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}:root{line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--surface-text);background-color:var(--surface);--display-xl-hero-font-size: 112px;--display-xl-font-size: 88px;--display-l-font-size: 57px;--display-m-font-size: 45px;--display-s-font-size: 36px;--display-xs-font-size: 24px;--menu-item-font-size: 16px;--divider-width: 15px;--divider-margin: 86px auto 0 auto;--grid-template-columns-skills-container: repeat(auto-fit, minmax(150px, 1fr));--surface-container-border-radius: 18px;--spacer-height: 0px;--tile-border-radius: 24px;--tile-border-radius-active: 48px;--tile-bottom-padding: 24px;--tile-grid-min-row-height: 320px;--article-max-width: 1200px;--article-margin: 32px;--footer-margin: 24px;--container-max-width: 1760px;--margin-center: 0 auto;--margin-section: 36px auto 0 auto;--margin-article: 0 24px;--margin-header: 24px;--margin-skills-wrapper: 36px 0 0 0;--margin-skills: 16px 32px;--mobile-menu-item-border-radius: 24px;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}@media screen and (min-width: 600px){:root{--footer-margin: 48px}}@media screen and (min-width: 960px){:root{--article-margin: 24px;--footer-margin: 16px;--divider-margin: 126px auto 0 auto;--grid-template-columns-skills-container: repeat(6, 1fr);--margin-section: 96px auto 0 auto;--margin-skills: 12px 24px;--menu-item-font-size: 12px;--spacer-height: 132px}}html{transition:ease .3s}html[data-theme=light]{--theme-colour-primary: #cbbeff;--scrim: #00000052;--surface-text: #1c1b1d;--surface-container-text: #4d4256;--surface-container-text-hover: #322b38;--surface-container-text-active: #201b24;--surface-2-container-text-active: #21182b;--surface: #fefbff;--surface-variant: #e8e0e8;--surface-container: #f8f1f6;--surface-container-hover: #dcdaf5;--surface-2: #f2ecee;--surface-2-container-hover: #e5dee2;--surface-2-container-active: var(--surface-container-hover);--surface-2-container-active-hover: #d0cee8;--surface-mobile-header: #fff;--mobile-menu-box-shadow: 2px 0px 11px 0px #0f0d1237}html[data-theme=dark]{--theme-colour-primary: #ccbeff;--scrim: #14121883;--surface-text: #e1e1e1;--surface-container-text: #e7e7e7;--surface-container-text-hover: #b0aeae;--surface-container-text-active: #888787;--surface-2-container-text-active: #e2e0fb;--surface: #141314;--surface-variant: #4d4256;--surface-container: #1c1b1d;--surface-container-hover: #45455a;--surface-2: #211f21;--surface-2-container-hover: #2f2c2f;--surface-2-container-active: var(--surface-container-hover);--surface-2-container-active-hover: #504f63;--surface-mobile-header: #0c0b0f;--mobile-menu-box-shadow: 2px 0px 11px 0px #0f0d12}a{font-weight:500;color:var(--surface-container-text);text-decoration:inherit}body{margin:0;display:flex;min-width:320px;min-height:100vh}article{max-width:var(--article-max-width);margin:var(--margin-center)}h1,h2,h3,h4,h5,h6{font-family:Product Sans Bold,sans-serif;font-weight:475}h1{font-size:var(--display-l-font-size);line-height:1.1}@media screen and (min-width: 600px){h1{font-size:var(--display-xl-font-size)}}@media screen and (min-width: 1200px){h1{font-size:var(--display-xl-hero-font-size)}}h2{font-size:var(--display-s-font-size);line-height:1.2;margin:40px;margin-left:var(--article-margin);margin-right:var(--article-margin)}@media screen and (min-width: 600px){h2{font-size:var(--display-m-font-size)}}h3{font-size:var(--display-xs-font-size)}div.content-container{margin:0 24px}@media screen and (min-width: 600px){div.content-container{margin:0 40px}}@media screen and (min-width: 960px){div.content-container{margin:0 88px}}div.tiles-container{display:grid;grid-template-columns:1fr;gap:8px;grid-auto-flow:row;grid-auto-rows:minmax(var(--tile-grid-min-row-height),auto)}@media screen and (min-width: 600px){div.tiles-container{grid-template-columns:repeat(2,1fr)}}.tile-surface{background-color:var(--surface-container);border-radius:var(--tile-border-radius);color:var(--surface-container-text);transition:color .2s ease-out,background-color .2s ease-out,border-radius .2s ease-out;overflow:hidden;grid-column:span 1}.tile-surface:hover,.tile-surface:active{color:var(--surface-container-text);background-color:var(--surface-container-hover)}.tile-surface:active{border-radius:var(--tile-border-radius-active)}.tile-top{width:100%;height:298px;border-radius:var(--tile-border-radius);overflow:hidden}.tile-top img{height:100%;width:100%;object-fit:cover}div.tile-bottom{padding:var(--tile-bottom-padding);display:grid;gap:8px}div.tile-bottom *{margin:0}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button.mobileMenu-button{height:48px;width:48px;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:50%;font-size:var(--display-xs-font-size);background-color:transparent;color:var(--surface-container-text)}.flex{display:flex}
