@import"https://fonts.googleapis.com/css2?family=Rubik:wght@400;600&family=Fira+Code&display=swap&family=Ubuntu&display=swap";@font-face{font-family:Icons;src:url(./icons.eot?be3c450d9fd83d5789a8e0b7dbca0fb1#iefix) format("embedded-opentype"),url(/icons/icons.woff?874e82c750617d187fb86377aff91dd6) format("woff"),url(/icons/icons.woff2?874e82c750617d187fb86377aff91dd6) format("woff2")}[class^=icon-]:before,[class*=" icon-"]:before,article ul a:before{font-family:Icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article ul a:before{position:absolute;left:0;top:0}.icon-npm:before{content:""}.icon-mode-light:before{content:""}.icon-mode-dark:before{content:""}.icon-github:before{content:""}:root{line-height:1;font-weight:400;color-scheme:light dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;--font-special: "Rubik", sans-serif;--font-sans: "Ubuntu", sans-serif;--font-mono: "Fira Code", monospace;--font-ico: "Icons";--hue-bg: 0deg;--hue-bg-contrast: 275deg;--hue-primary: 275deg;--hue-primary-contrast: 0deg;--hue-accent: 275deg;--hue-accent-contrast: 275deg;--overlay-hue-shift: 190deg;--color-bg: #dde0ee;--color-bg-lit: #eef0f6;--color-bg-contrast: #1e1e2e;--color-bg-contrast-lit: #313244;--color-primary: #313244;--color-primary-dim: #2e2e61;--color-primary-contrast: #e6e9ff;--color-accent: #a6e3a1;--color-accent-dim: #7f849c;--color-accent-contrast: #313244;--color-border-card: #8fc18b;--mode-ico: ""}.dark{--hue-bg: 275deg;--hue-bg-contrast: 275deg;--hue-primary: 260deg;--hue-primary-contrast: 275deg;--hue-accent: 275deg;--hue-accent-contrast: 260deg;--overlay-hue-shift: 200deg;--color-bg: #11111b;--color-bg-lit: #181825;--color-bg-contrast: #cdd6f4;--color-bg-contrast-lit: #b4befe;--color-primary: #a6e3a1;--color-primary-dim: #a1e99b;--color-primary-contrast: #313244;--color-accent: #1e1e2e;--color-accent-dim: #7f849c;--color-accent-contrast: #b4befe;--color-border-card: #313244;--mode-ico: ""}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--color-bg);color:var(--color-bg-contrast);font-size:1.125rem;font-family:var(--font-sans)}main{padding:0 1rem}header{background-color:var(--color-accent);color:var(--color-accent-contrast);text-align:center;padding:4rem 1rem;border-bottom:dashed 2px var(--color-primary)}h1{font-family:var(--font-special);font-size:2.5rem;font-weight:600;color:var(--color-accent-contrast);line-height:1;letter-spacing:.2rem;text-transform:uppercase}header a{font-family:var(--font-special);display:inline-block;font-weight:600;text-decoration:underline;color:var(--color-accent-contrast);font-size:1.75rem;line-height:1;margin-top:1.5rem;padding-left:2rem;position:relative}header a:before{width:1em;height:1em;position:absolute;top:0;left:0}header em{margin-top:2rem;display:block;font-size:1rem;position:relative;font-family:var(--font-mono)}header ul{margin-top:.5rem;list-style:none;display:flex;justify-content:center;font-size:1rem}header li{margin:0 .4rem;font-family:var(--font-mono)}header .mode{width:3rem;height:1.5rem;background-color:transparent;border:none;cursor:pointer;position:absolute;top:1rem;right:1rem}header .mode:before{content:var(--mode-ico);font-size:1.5rem;color:var(--color-accent-contrast)}nav{background-color:var(--color-primary);position:sticky;top:0;padding:1rem;z-index:2}nav ul{list-style:none;display:flex;justify-content:center}nav a{font-family:var(--font-special);color:var(--color-primary-contrast);font-weight:600;font-size:min(1.125rem,4vw);margin:.5rem;text-decoration:none}nav a:hover{text-decoration:underline}section{max-width:60rem;margin:0 auto;padding-top:5rem}section:last-child{margin-bottom:5rem}h2{font-family:var(--font-special);font-size:1.7rem;font-weight:400;color:var(--color-bg-contrast-lit);margin-bottom:1.5rem;position:relative}h2:before{content:"";position:absolute;width:100%;border-top:dashed 1px var(--color-bg-contrast-lit);opacity:.5;top:.4em;right:0}h2 a{color:var(--color-primary);text-decoration:none}h2 a:hover{text-decoration:underline}h2 .bg{background-color:var(--color-bg);padding-right:1.5rem;position:relative}p{line-height:1.6;font-size:1.125rem}p+p{margin-top:1rem}p a{color:var(--color-primary-dim)}#projects>p,#libraries>p{margin-bottom:2rem}aside{background-color:var(--color-accent);padding:1.5rem 1rem;margin-top:2rem;border-left:dashed 2px var(--color-primary-dim);color:var(--color-accent-contrast);font-weight:400}aside a{background-color:var(--color-primary);color:var(--color-primary-contrast);padding:.2rem .5rem}.card{display:flex;flex-wrap:wrap;font-size:0}.card+.card{margin-top:2rem}.card .miniature,.card .info{position:relative;width:min(480px,100%)}.card .miniature{filter:sepia(100%) hue-rotate(var(--overlay-hue-shift));transition:filter .5s}.card .miniature img{width:100%}.card:hover .miniature{filter:none}.card .description,.card .form{background-color:var(--color-bg-lit);border:dashed 1px var(--color-border-card);border-bottom:solid 2px var(--color-primary);width:min(480px,100%);position:relative}.card .description{padding:3.5rem 1.5rem 2rem}.card .form{padding:2rem}#projects .card .description{border-left:none}article{min-height:270px;position:relative}article h3{font-family:var(--font-special);font-size:1.5rem;font-weight:400;letter-spacing:.05rem;margin-bottom:1rem;color:var(--color-bg-contrast-lit);position:relative}article h3 a{text-decoration:none;font-size:2.5rem;line-height:1.5rem;position:absolute;top:.25rem;padding-left:.25rem}article h3 a:hover{text-decoration:none}article ul{position:absolute;top:-1px;right:-1px;background-color:var(--color-accent);border-bottom-left-radius:.25rem;color:var(--color-primary-dim);list-style:none;display:flex;justify-content:flex-end;padding:.5rem}article a{color:var(--color-primary-dim);text-decoration:underline}article ul a{color:var(--color-accent-contrast);font-size:.875rem;line-height:1.1rem;display:inline-block;height:1rem;background-size:contain;background-repeat:no-repeat;position:relative}article ul a[href*="github.com"]{padding-left:1.3rem}article ul a[href*="npmjs.com"]{padding-left:2.1rem}article ul a[href*="github.com"]:before{content:""}article ul a[href*="npmjs.com"]:before{content:""}article ul li+li{margin-left:1rem}article ul a{text-decoration:none}article ul a b{font-size:.875rem}article a:hover{text-decoration:underline}article p{font-size:1rem;margin-bottom:1rem}.description>a{text-decoration:underline;font-size:1rem;font-weight:600}.description>a+a{padding-left:1rem}.disclaimer{background-color:transparent;border-left:none;font-size:1rem;padding:4rem 0 0;margin-top:0}.disclaimer p{font-size:1rem;line-height:1.5;position:relative;padding:1rem 1rem 1rem 2rem;background-color:var(--color-bg-lit)}.disclaimer p:before{content:"*";position:absolute;left:0;top:1rem;width:2rem;text-align:center;font-size:2.5rem;line-height:1}form{font-size:1rem}input,textarea{width:100%;padding:.5rem;font-size:1rem;font-family:var(--font-mono);margin-top:.5rem;background-color:var(--color-primary-contrast);border:solid 1px var(--color-border-card);color:var(--color-bg-contrast)}label{display:block;color:var(--color-bg-dim)}label+label{margin-top:1rem}input:focus,textarea:focus{outline:solid 2px var(--color-primary);outline-offset:-1}form button{padding:.5rem;width:100%;background-color:var(--color-primary);border:none;font-family:var(--font-special);font-weight:600;font-size:1.125rem;color:var(--color-primary-contrast);text-transform:uppercase;margin-top:1.5rem;cursor:pointer}form button:hover{background-color:var(--color-primary-dim)}.info{background-color:var(--color-bg);color:var(--color-bg-contrast);padding:2rem}.info p{font-size:1.125rem}.grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem 1rem}.grid .card+.card{margin-top:0}footer{background-color:var(--color-accent);border-top:dashed 2px var(--color-accent-dim);padding:1.5rem 1rem 2.5rem}footer p{font-size:1rem;color:var(--color-accent-contrast);text-align:center}footer ul{list-style:none;display:flex;justify-content:center;margin-top:1rem}footer li{display:inline-block;font-size:1.125rem}footer a{color:var(--color-primary-dim)}footer li+li{padding-left:2rem;position:relative}footer li+li:before{content:"|";width:2rem;color:var(--color-primary-dim);text-align:center;position:absolute;top:0;left:0}@media (max-width: 1006px){section{padding-top:4rem}.card .miniature,.card .info,.card .form{width:100%}.card .description,#projects .card .description{width:100%;padding-top:3.5rem;padding-bottom:2rem;border-left:dashed 1px var(--color-border-card)}.card .description ul{width:calc(100% + 2px);border-bottom-left-radius:0}.card .miniature:after{display:none}.grid{grid-template-columns:1fr}footer ul{display:block}footer li{display:block}footer a{color:var(--color-primary-dim)}footer li{padding:.5rem 1rem;text-align:center}footer li+li{padding:.5rem 1rem}footer li+li:before{display:none}header .mode{top:.5rem;right:.5rem}}
