@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono&family=Inter:wght@300;350;400;450;500;550;600;650;700&family=Open+Sans:wght@400;450;500;550;600;650;700&display=swap";
:root{--gray-0:#f8f9fa;--gray-05:#f3f6f9;--gray-1:#f1f3f5;--gray-2:#e9ecef;--gray-25:#e5eaf0;--gray-3:#dee2e6;--gray-4:#cfd4d9;--gray-45:#c3cad1;--gray-5:#adb5bd;--gray-6:#868e96;--gray-65:#5a646c;--gray-7:#4b5056;--gray-8:#2a2f33;--gray-85:#31363b;--gray-9:#212529;--gray-10:#16191c;--gray-11:#101214;--green:#51b681;--green-1:#95cd7f;--green-2:#73b18a;--green-3:#4d8994;--green-4:#30619d;--green-5:#30379d;--red:#f34646;--red-1:#efcf4a;--red-2:#e0a944;--red-3:#d37d36;--red-4:#cd583c;--red-5:#ab2e3f;--blue:#07a7e6;--blue-1:#70bdee;--blue-2:#618be1;--blue-3:#5b5ed5;--blue-4:#623ac6;--blue-5:#58119f;--rainbow-1:#da66b7;--rainbow-2:#7549f0;--rainbow-3:#4989c6;--rainbow-4:#72bf8d;--rainbow-5:#f4c950;--orange:#ff7e22;--yellow:#fca62a;--pink:#e855b3;--purple:#623ac6;--indigo:#5a43f1;--indigo-dark:#4509cf;--indigo-light:#969bf5;--indigo-muted:#f1f2fd;--color-neutral-muted:#afb8c133;--font-family-monospace:"IBM Plex Mono", monospace;--inline-code-background-color:#afb8c133;--gray-2-grad:233, 236, 239;--gray-3-grad:222, 226, 230;--nav-height:3rem;--main-header-height:10rem;--greet-height:530px;--main-offset:var(--nav-height);--page-offset:calc(var(--main-offset) + var(--main-header-height));--mobile-ctnr-side-padding:1.5rem;scroll-padding-top:calc(var(--main-offset) + .8rem);--app-bg-color:var(--gray-3);--app-box-shadow:0 0 8px 1px var(--gray-4);--page-bg-color:var(--gray-1);--heading-color:var(--gray-9);--font-color-base:#3a3f44;--font-color-muted:var(--gray-65);--link-color:#3e54cf;--footer-link-hover-color:var(--rainbow-2);--time-color:var(--gray-7);--btn-color:var(--gray-7);--btn-border:2px solid var(--gray-5);--btn-hover-border:2px solid var(--gray-6);--btn-active-border:2px solid black;--app-nav-bar-bg-color:var(--gray-3);--app-nav-color:var(--gray-65);--app-nav-active-color:var(--green-4);--app-nav-active-dash-color:var(--rainbow-1);--app-nav-dash-border-color:var(--app-nav-color);--app-mobile-nav-bg:var(--gray-0);--me-box-shadow:-10px 5px 15px var(--gray-5), 10px -5px 15px #fff;--scroll-bar-bg:var(--gray-3);--scroll-bar-thumb:var(--gray-45);--brand-dark:url(../media/ct-dark-new.3nwqptdka2d3r.svg);--brand-light:url(../media/ct-light-new.2_k99ufk4wzf3.svg);--hero-bg-graphic:var(--brand-light);--skills-category-btn-color:var(--gray-6);--skills-category-btn-active-color:var(--gray-8);--skills-category-btn-hover-color:var(--blue-3);--skills-category-btn-border-color:var(--gray-4);--skills-category-btn-active-border-color:var(--blue-4);--skills-category-btn-active-bg:var(--gray-3);--home-post-bg:var(--gray-25);--resume-box-shadow:0 0 2px #fff, 0 4px 12px -4px #0000004d;--posts-year-heading:#73914a;--tag-bg:var(--gray-05);--tag-active-bg:#fff;--tag-color:var(--gray-7);--tag-hover-color:var(--blue-4);--tag-border-color:var(--gray-4);--tag-hover-border-color:var(--blue-4);--tag-active-border-color:var(--blue-4);--tag-active-color:var(--blue-4);--contact-input-bg:var(--gray-3);--contact-input-color:var(--gray-10);--contact-input-focus-bg:#fff;--contact-input-focus-border-color:var(--green-5);--contact-button-color:var(--gray-10);--contact-button-bg:#c4c4c4;--contact-button-focus-bg:#b3b3b3;--contact-button-hover-bg:#b8b8b8;--contact-button-active-bg:silver;--contact-button-active-box-shadow:0 4px 12px -6px #00000078;--blog-blockquote-color:var(--font-color-muted);--blog-blockquote-border-color:var(--gray-6);--blog-toc-a-color:var(--gray-7);--blog-toc-a-active-color:var(--blue-5);--link-btn-bg:var(--gray-05);--link-btn-color:var(--gray-8);--link-btn-border-color:var(--gray-4);--link-btn-hover-border-color:var(--gray-6);--link-btn-active-border-color:#000;--todo-filter:none}html *{-moz-text-size-adjust:auto;text-size-adjust:auto;max-height:1000000px}*,:before,:after{box-sizing:border-box;margin:0}input:focus,select:focus,textarea:focus,button:focus{outline:none}input,textarea,button,select,a{-webkit-tap-highlight-color:#0000;-webkit-touch-callout:none}::-webkit-scrollbar{background:var(--scroll-bar-bg);width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--scroll-bar-thumb);border-radius:2px}body{background-color:var(--app-bg-color);color:var(--font-color-base);font-family:Inter,sans-serif}.layout-component{max-width:1440px;box-shadow:var(--app-box-shadow);margin:auto}p,li{letter-spacing:-.01rem;font-size:1rem;line-height:1.6}@media screen and (max-width:710px){p,li{font-size:.95rem}}p{margin:.5rem 0}ul,ol{padding-left:1.5rem}li{margin-bottom:.2rem;padding-left:.25rem}h1,h2,h3,h4{letter-spacing:-.03rem;color:var(--heading-color);font-family:Open Sans,sans-serif;font-weight:600}h1{margin:0 0 1.2rem;font-size:2.8rem}h2{margin:0 0 1rem;font-size:2rem}h3{margin:1rem 0 .4rem;font-size:1.2rem}h4{margin:.8rem 0 .2rem;font-size:1rem}a{color:var(--link-color);text-decoration:none}a:hover{text-decoration:underline}h1 a,h2 a,h3 a{color:inherit}h1 a:hover,h2 a:hover,h3 a:hover{text-decoration:underline}time{color:var(--time-color);font-family:monospace;font-size:.75rem}.button{border:var(--btn-border);color:var(--btn-color);background-color:#0000;border-radius:.25rem;height:fit-content;padding:.4rem .6rem;font-size:.8rem}.button:hover{border:var(--btn-hover-border);text-decoration:none}.button:active{border:var(--btn-active-border)}.image-wrapper img{width:100%;height:auto}.card.anchored{padding-bottom:3rem;position:relative}.links.anchored{position:absolute;bottom:1rem}.nav-component{z-index:1;background-color:var(--app-nav-bar-bg-color);font-size:1.2rem;font-weight:450;position:sticky;top:0}.nav-component .logo{letter-spacing:-.04ch;-webkit-user-select:none;user-select:none;color:inherit;margin-left:.8rem;font-weight:800}.nav-component .logo a{color:inherit;font-size:1.6rem;line-height:.85;position:relative}.nav-component .logo a #logoDash{transition:transform .35s cubic-bezier(.86,0,.07,.995);display:inline-block;position:absolute;transform:translate(.3ch)}.nav-component .logo a:hover{text-decoration:none}.nav-component .logo a:active{color:var(--app-nav-active-color)}.nav-component .logo a:active #logoDash{transform:translate(.4ch)}.nav-component .logo a.active{color:var(--app-nav-active-color)}.nav-component .logo a.active #logoDash{transform:translate(-.3ch)}.nav-component .theme-toggle{color:var(--app-nav-active-color);cursor:pointer;background-color:#0000;border:none;height:1.4rem;margin:0 1rem;font-size:1.4rem;line-height:1;position:absolute;top:50%;right:0;transform:translateY(-50%)}.nav-component .theme-toggle svg{width:1.4rem;height:1.4rem}.nav-component .theme-toggle svg #inner{transition:transform .5s cubic-bezier(.41,.47,.75,1.15),color .3s ease-in-out;transform:translate(0)}.nav-component .theme-toggle svg #outer{transform-origin:50%;transition:transform .5s cubic-bezier(.41,.47,.75,1.15),color .3s ease-in-out;transform:rotate(0)}.nav-component .theme-toggle.light svg #inner{transform:translate(-15%)}.nav-component .theme-toggle.light svg #outer{transform:rotate(180deg)}.nav-component .nav-header{min-height:var(--nav-height);color:var(--app-nav-color);flex-flow:row;justify-content:space-between;align-items:center;padding-right:2.8rem;display:flex;position:relative;top:0}.nav-component #nav-bar{height:var(--nav-height);color:var(--app-nav-color)}.nav-component #nav-colapse-items li,.nav-component #nav-exp-items li{letter-spacing:-.04ch;text-transform:uppercase;width:fit-content;padding:0;font-weight:600;position:relative}.nav-component #nav-colapse-items li a,.nav-component #nav-exp-items li a{color:var(--app-nav-color)}.nav-component #nav-colapse-items li a:hover,.nav-component #nav-exp-items li a:hover{text-decoration:none}.nav-component #nav-colapse-items li a:after,.nav-component #nav-exp-items li a:after{content:"";transform-origin:0;opacity:0;width:100%;height:4px;color:inherit;border-bottom:solid 1px var(--app-nav-dash-border-color);pointer-events:none;background-color:currentColor;transition:all .3s ease-out;display:block;position:absolute;bottom:0}.nav-component #nav-colapse-items li a:hover:after,.nav-component #nav-exp-items li a:hover:after{opacity:1}.nav-component #nav-colapse-items li a.active,.nav-component #nav-exp-items li a.active{color:var(--app-nav-active-color)}.nav-component #nav-colapse-items li a.active:after,.nav-component #nav-exp-items li a.active:after{opacity:1;background-color:var(--app-nav-active-dash-color);bottom:calc(50% - 2px)}.nav-component #nav-colapse-items ul{flex-direction:row;flex-grow:1;justify-content:flex-end;align-items:center;height:100%;margin-top:0;margin-bottom:0;margin-right:1rem;padding:0;display:flex}.nav-component #nav-colapse-items li{margin:0 0 0 2rem;padding:0;font-size:1rem;list-style-type:none;display:inline-block}.nav-component #nav-colapse-items li:first-child{margin-left:0}.nav-component #nav-exp-items{background-color:var(--app-mobile-nav-bg);clip-path:polygon(0 0,100% 0,100% 0,0 0);flex-direction:column;justify-content:space-between;transition:clip-path .75s;display:flex;position:fixed;inset:0;overflow-x:hidden}.nav-component #nav-exp-items ul{padding-top:2rem;padding-left:1rem}.nav-component #nav-exp-items li{letter-spacing:-.04ch;text-transform:uppercase;margin-bottom:1.2rem;font-size:3.6rem;font-weight:600;line-height:1.2;list-style-type:none}.nav-component #nav-exp-items li a:after{height:8px}.nav-component #nav-exp-items .nav-footer{text-align:center;color:var(--font-color-muted);padding:1rem;font-size:1rem}.nav-component #nav-exp-items .nav-footer p{text-align:left}.nav-component button.menu{letter-spacing:-.04ch;text-transform:uppercase;color:var(--app-nav-color);cursor:pointer;background-color:#0000;border:none;margin-right:.8rem;font-size:1rem;font-weight:600;position:relative;overflow:hidden}.nav-component button.menu .menu-label{visibility:hidden}.nav-component button.menu:before,.nav-component button.menu:after{padding:inherit;line-height:1;transition:all .35s cubic-bezier(.86,0,.07,.995);display:block;position:absolute;right:0}.nav-component button.menu:before{content:"menu";bottom:0}.nav-component button.menu:after{content:"close";bottom:-100%}.nav-component button.menu.open:before{bottom:100%}.nav-component button.menu.open:after{bottom:0}.nav-component #nav-exp-items.expand{clip-path:polygon(0 0,100% 0,100% 100%,0 100%);transition:clip-path .75s}@media screen and (min-width:550px){.nav-component #nav-colapse-items button.menu,.nav-component #nav-colapse-items .logo{display:none}}@media screen and (max-width:550px){.nav-component #nav-colapse-items ul{display:none}}.hidden{display:none}.footer-component{color:var(--font-color-muted);text-align:center;background-color:#0000;flex-direction:column;gap:1rem;padding:1.2rem;display:flex}.footer-component p{margin:0;padding:0;font-size:.8rem;line-height:1rem}.footer-component p a{color:inherit}.footer-component p a:hover{color:var(--footer-link-hover-color);border-bottom:1px solid;text-decoration:none}.me-component{text-align:center;color:var(--font-color-base);background-color:#0000;padding:1.5rem 2rem 1rem;font-size:.95rem}.me-component .pp{width:30vw;max-width:175px;height:30vw;max-height:175px;box-shadow:var(--me-box-shadow);border-radius:50%;margin:0 auto;overflow:hidden}.me-component h1.profile-name{color:var(--heading-color);margin:1rem 0 .8rem;font-size:1.6rem;line-height:1.05}.me-component .social{justify-content:center;margin:0 0 .8rem;display:flex}.me-component .social a svg{color:var(--font-color-muted);fill:currentColor;width:1.5em;height:1.5em;margin:0 5px}.me-component .social a:active svg,.me-component .social a:hover svg{color:var(--font-color-base)}.me-component .bio{color:inherit;flex-flow:wrap;justify-content:center;align-items:flex-end;margin:0 0 .8rem;font-size:.9rem;line-height:1.2;display:flex}.me-component .bio .icon{font-family:sans-serif;font-size:1.25rem;line-height:1.25rem}.me-component .bio .icon.night{font-size:1.1rem}img{max-width:100%;height:auto}.layout-main{background-color:var(--page-bg-color);min-height:calc(100vh - (317px + var(--main-offset) + 40px));padding-bottom:1px}.container{margin:1rem 0 3rem;padding:0 2.8rem}.head-container{padding:3.4rem 2.8rem 1rem}.head-container h1{margin:0;font-weight:650;line-height:1.15}header.hero{background:no-repeat var(--hero-bg-graphic);background-position:100% 0;background-size:contain}p.hero-description{letter-spacing:normal;color:var(--font-color-muted);margin:1.5rem 0 1rem;font-size:1.2rem;font-weight:500;line-height:1.5}.section-heading{justify-content:space-between;display:flex}.section-heading h2{margin-bottom:1.2rem}.image{aspect-ratio:1;border-radius:.2rem;max-width:150px;max-height:150px;overflow:hidden}.skills-section{flex-direction:row;display:flex}.category{min-width:12rem}@media screen and (max-width:1150px){.category{min-width:auto}}.category{padding:0;list-style-type:none}.category li{margin:0;padding:0}.category li button{width:100%;color:var(--skills-category-btn-color);text-align:right;border:none;border-right:3px solid var(--skills-category-btn-border-color);background-color:#0000;margin:0;padding:.5rem 1rem;font-size:.8rem;font-weight:500;line-height:1.6}.category li button:hover{cursor:pointer;color:var(--skills-category-btn-hover-color)}.category li button.active{color:var(--skills-category-btn-active-color);background-color:var(--skills-category-btn-active-bg);border-right:3px solid var(--skills-category-btn-active-border-color)}.skills{flex-flow:wrap;place-content:space-evenly space-around;width:100%;padding:.8rem 1.5rem;display:flex}.skill{text-align:left;width:8.5rem;color:var(--heading-color);margin:0 1.5rem .5rem 0;font-size:1.15rem;font-weight:400;line-height:2.2}.skill>img{vertical-align:middle;width:36px;height:36px}@media screen and (max-width:1140px) and (min-width:925px){.skill{width:fit-content;margin:0 1rem .5rem 0;font-size:1.1rem}}@media screen and (max-width:800px) and (min-width:710px){.skill{width:fit-content;margin:0 1rem .5rem 0;font-size:1.1rem}}@media screen and (max-width:710px){.category-wrapper{width:100%;height:2.8rem;position:absolute;left:0;overflow-y:hidden}.category{box-sizing:content-box;width:100%;height:fit-content;-webkit-mask-image:-webkit-linear-gradient(to right, transparent, white 16px, white 90%, transparent);mask-image:-webkit-linear-gradient(to right, transparent, white 16px, white 90%, transparent);-webkit-mask-image:-moz-linear-gradient(to right, transparent, white 16px, white 90%, transparent);mask-image:-moz-linear-gradient(to right, transparent, white 16px, white 90%, transparent);mask-image:linear-gradient(90deg,#0000,#fff 16px 90%,#0000);-webkit-mask-image:-webkit-linear-gradient(to right, transparent, white 16px, white 90%, transparent);-webkit-mask-image:-moz-linear-gradient(to right, transparent, white 16px, white 90%, transparent);flex-flow:row;justify-content:normal;padding-bottom:1.2rem;display:flex;position:absolute;left:0;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000,#fff 16px 90%,#0000)}.category li:first-child{margin-left:var(--mobile-ctnr-side-padding)}.category li:last-child{margin-right:var(--mobile-ctnr-side-padding)}.category li button{border-right:none;border-bottom:2px solid var(--skills-category-btn-border-color);text-align:left;white-space:pre;min-width:fit-content}.category li button.active{border-right:none;border-bottom:2px solid var(--skills-category-btn-active-border-color)}.skills-section{flex-direction:column}.skills{padding:4rem .5rem 1rem}.skills .skill{width:7.1rem;font-size:.9rem}}.home-posts .card{background-color:var(--home-post-bg);border-radius:.25rem;padding:1.5rem}@media screen and (max-width:710px){.container{padding:0 var(--mobile-ctnr-side-padding);margin:1rem 0 2rem}.head-container{padding:2rem var(--mobile-ctnr-side-padding) .8rem}p.hero-description{margin:1rem 0;font-size:1.1rem}h1{font-size:2.1rem}h2{font-size:1.4rem}h3{font-size:1rem}}.resume .image-wrapper img{max-width:1200px;box-shadow:var(--resume-box-shadow)}div#todo{width:30%;min-width:256px;margin:auto}div#todo img{width:100%;filter:var(--todo-filter)}@supports (display:grid){@media screen and (min-width:1080px){.layout-component{grid-template-columns:minmax(21rem,1fr) minmax(0,4fr);grid-template-areas:"nl0 nv""grt mn""ftr mn""nl1 mn";grid-template-rows:var(--main-offset) 530px calc(100vh - var(--main-offset) - var(--greet-height)) auto;display:grid}.layout-component .layout-main{--main-min-height:calc(100vh - var(--main-offset));min-height:var(--main-min-height);scroll-behavior:smooth;grid-area:mn}.layout-component .me-component{top:var(--nav-height);vertical-align:bottom;flex-direction:column;grid-area:grt;justify-content:center;display:flex;position:sticky}.layout-component .me-component .pp{max-width:200px;max-height:200px}.layout-component .me-component h1.profile-name{margin:1rem 0 1.5rem;font-size:1.8rem}.layout-component .nav-component{grid-area:nv}.layout-component .footer-component{--footer-height:6rem;--footer-offset:max(calc(100vh - var(--footer-height)), calc(var(--main-offset) + var(--greet-height)));top:var(--footer-offset);height:var(--footer-height);grid-area:ftr;align-self:end;position:sticky}}.layout-component .home-projects{grid-template-columns:repeat(auto-fill,minmax(192px,1fr));gap:1.5rem 1rem;display:grid}@media screen and (max-width:1440px){.layout-component .home-projects .card .image-wrapper img{aspect-ratio:3/2}}@media screen and (max-width:500px){.layout-component .home-projects .card .image-wrapper img{aspect-ratio:2}}.layout-component .home-posts{grid-template-columns:repeat(3,1fr);gap:.8rem;display:grid}@media screen and (max-width:1130px) and (min-width:925px){.layout-component .home-posts{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width:750px){.layout-component .home-posts{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width:550px){.layout-component .home-posts{grid-template-columns:1fr}}.images{grid-template-columns:repeat(8,1fr);gap:.2rem;display:grid}@media screen and (max-width:1440px) and (min-width:1000px){.images{grid-template-columns:repeat(7,1fr)}.images div:nth-child(n+15){display:none}}@media screen and (max-width:1000px) and (min-width:925px){.images{grid-template-columns:repeat(6,1fr)}.images div:nth-child(n+13){display:none}}@media screen and (max-width:925px) and (min-width:710px){.images{grid-template-columns:repeat(6,1fr)}.images div:nth-child(n+13){display:none}}@media screen and (max-width:710px){.images{grid-template-columns:repeat(5,1fr)}.images div:nth-child(n+6){display:none}}@media screen and (max-width:500px){.images{grid-template-columns:repeat(4,1fr)}.images div:nth-child(n+5){display:none}}}.card{background-color:#0000;flex-direction:column;display:flex}.card .image-wrapper img{aspect-ratio:1;object-fit:cover}.card h3{margin:.5rem 0;font-size:1.1rem}.card h3 a:hover{text-decoration:underline}.card .tags{flex-wrap:wrap;display:flex}.card .tags .tag{border:solid 1px var(--tag-border-color);background-color:var(--tag-bg);border-radius:.25rem;margin:.2rem .3rem .2rem 0;padding:.2rem .3rem;font-family:monospace;font-size:.7rem}.card .tags .tag:hover{border:solid 1px var(--tag-hover-border-color);background-color:var(--tag-active-bg);color:var(--tag-hover-color);cursor:pointer}.card .links .button{background-color:var(--link-btn-bg);color:var(--link-btn-color);border-color:var(--link-btn-border-color);margin-right:.25rem;font-weight:550}.card .links .button:hover{border-color:var(--link-btn-hover-border-color)}.card .links .button:active{border-color:var(--link-btn-active-border-color)}.card .links .button:last-child{margin:0}.card.project-card .proj-desc time{font-weight:600}.card.project-card .proj-desc h3{margin:.2rem 0;font-size:1.3rem;font-weight:400;line-height:1.15}.card.project-card .proj-desc p{font-size:.9rem;line-height:1.2}@supports not (display:grid){#nav-colapse-items{width:fit-content;margin:auto}.layout-main{width:70%;margin:auto}@media screen and (max-width:925px){.layout-main{width:100%}}.images{flex-wrap:wrap;gap:.5rem;display:flex}.home-posts,.home-projects{flex-wrap:wrap;justify-content:flex-start;gap:1rem;display:flex}.home-posts .card{width:15rem}.home-projects .card{width:200px}}.posts-component h2.year{color:var(--posts-year-heading);font-size:1.9rem;font-weight:700}.posts-component .tags-filter .tags{flex-wrap:wrap;display:flex}.posts-component .tags-filter .tags .tag{border:solid 2px var(--tag-border-color);background-color:var(--tag-bg);color:var(--tag-color);border-radius:.25rem;margin:.2rem .3rem .2rem 0;padding:.2rem .3rem;font-family:monospace;font-size:.75rem}.posts-component .tags-filter .tags .tag:hover{border:solid 2px var(--tag-hover-border-color);background-color:var(--tag-active-bg);color:var(--tag-hover-color);cursor:pointer}.posts-component .tags-filter .tags .tag.active{border:solid 2px var(--tag-active-border-color);background-color:var(--tag-active-bg);color:var(--tag-active-color)}.posts-component .posts>a{color:inherit;justify-content:space-between;align-items:baseline;display:flex}.posts-component .posts>a h3{margin:.3rem 0;line-height:1.3}.posts-component .posts>a time{direction:rtl;min-width:5rem;font-family:monospace;font-size:.8rem}.contact-component form.form-control{width:100%;max-width:800px}.contact-component form.form-control .inp-name{flex-direction:row;justify-content:flex-start;display:flex}.contact-component form.form-control .inp-name div{flex:1}.contact-component form.form-control .inp-name div:first-child{margin:0 1rem 0 0}.contact-component form.form-control .field-container{margin-bottom:.8rem}.contact-component form.form-control input,.contact-component form.form-control textarea{color:var(--contact-input-color);background-color:var(--contact-input-bg);border:none;border-bottom:2px solid #0000;width:100%;margin-top:.35rem;padding:.45rem .75rem;font-family:Arial,Helvetica,sans-serif;font-size:.9rem;line-height:1.2rem;display:block}.contact-component form.form-control textarea{resize:vertical;border:2px solid #0000}.contact-component form.form-control input:focus,.contact-component form.form-control textarea:focus{background-color:var(--contact-input-focus-bg);border-bottom:2px solid var(--contact-input-focus-border-color)}.contact-component form.form-control textarea:focus{border:2px solid var(--contact-input-focus-border-color)}.contact-component form.form-control button{color:var(--contact-button-color);background-color:var(--contact-button-bg);border-color:#0000;margin:.4rem auto;padding:.4rem .6rem;font-size:1.05rem;transition:all .15s ease-out}.contact-component form.form-control button:focus{background-color:var(--contact-button-focus-bg)}.contact-component form.form-control button:hover{background-color:var(--contact-button-hover-bg)}.contact-component form.form-control button:active{background-color:var(--contact-button-active-bg);box-shadow:var(--contact-button-active-box-shadow)}@media screen and (max-width:600px){.contact-component form.form-control{width:100%}.contact-component form.form-control .inp-name{flex-direction:column}.contact-component form.form-control .inp-name div:first-child{margin:0 0 .8rem}.contact-component form.form-control textarea,.contact-component form.form-control input{width:100%}}.projects-component .projects-grid{grid-template-columns:repeat(auto-fill,minmax(192px,1fr));gap:1.5rem 1rem;display:grid}@media screen and (max-width:1440px){.projects-component .projects-grid .card .image-wrapper img{aspect-ratio:3/2}}@media screen and (max-width:500px){.projects-component .projects-grid .card .image-wrapper img{aspect-ratio:2}}.blog-component h1 a svg,.blog-component h2 a svg,.blog-component h3 a svg,.blog-component h4 a svg,.blog-component h5 a svg,.blog-component h6 a svg{fill:currentColor}.blog-component h1:not(:first-child),.blog-component h2:not(:first-child){margin-top:3rem}.blog-component h3:not(:first-child){margin-top:2.5rem}.blog-component h4:not(:first-child){margin-top:2rem}.blog-component h4{text-transform:uppercase}.blog-component section.segment{margin-top:2rem}.blog-component blockquote{border-left:4px solid var(--blog-blockquote-border-color);color:var(--blog-blockquote-color);margin:1rem 0;padding:.5rem 1rem}.blog-component blockquote p{margin:0}.blog-component main.grid{grid-template-columns:minmax(600px,1fr) 320px;grid-template-areas:"article toc";gap:1rem;display:grid}.blog-component main.grid article.container{grid-area:article;min-width:0}.blog-component main.grid article.container p{text-align:justify}.blog-component main.grid aside.container{grid-area:toc;margin-top:0}.blog-component main.grid aside.container .toc-sidebar{top:var(--main-offset);margin-bottom:1rem;padding:1rem 0 0;position:sticky}.blog-component main.grid aside.container .toc-sidebar h2{letter-spacing:normal;text-transform:uppercase;font-size:1.25rem;font-weight:500}.blog-component main.grid aside.container .toc-sidebar .toc ul{margin:0 0 .75rem 1rem;padding-left:0;list-style-type:none}.blog-component main.grid aside.container .toc-sidebar .toc ul li{padding-left:0;font-size:.833rem}.blog-component main.grid aside.container .toc-sidebar .toc ul li a{color:var(--blog-toc-a-color);border-bottom:1px solid #0000}.blog-component main.grid aside.container .toc-sidebar .toc ul li a:hover{color:var(--blog-toc-a-active-color);border-bottom:1px solid;text-decoration:none}.blog-component main.grid aside.container .toc-sidebar .toc ul li p.active a{color:var(--blog-toc-a-active-color)}.blog-component main.grid aside.container .toc-sidebar .toc>ul{margin:.75rem 0 0}@media screen and (max-width:1300px) and (min-width:1080px){.blog-component main.grid{display:block}.blog-component main.grid aside.container .toc-sidebar{margin-top:1rem}}@media screen and (max-width:950px){.blog-component main.grid{display:block}}.loading-component{z-index:9999999;opacity:1;background-color:var(--gray-8);--letter-color:#c2fcb6;--cursor-color:var(--gray-3);--letter-width:48.4px;--typing-rate:.2s;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-component .loading,.loading-component .loading svg{width:128px}.loading-component .loading svg #c,.loading-component .loading svg #t,.loading-component .loading svg #dash{color:var(--letter-color)}.loading-component .loading svg #cursor{transform:translateX(calc(var(--letter-width) * -3));animation:typeforwards calc(2*var(--typing-rate)) steps(1) forwards;animation-delay:var(--typing-rate);color:var(--cursor-color);opacity:1}@keyframes typeforwards{0%{transform:translateX(calc(var(--letter-width) * -2))}50%{transform:translateX(calc(var(--letter-width) * -1))}to{transform:translateX(calc(var(--letter-width) * 0))}}.loading-component .loading svg #c{animation-delay:0}.loading-component .loading svg #t{animation-delay:var(--typing-rate)}.loading-component .loading svg #dash{animation-delay:calc(2*var(--typing-rate))}@keyframes typewriter{0%{opacity:0}to{opacity:1}}.loading-component.inactive{opacity:0;pointer-events:none;transition:opacity .5s ease-out}.loading-component2{z-index:9999999;opacity:1;--letter-color:var(--gray-7);--cursor-color:var(--gray-5);--letter-width:48.4px;background-color:#fff;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-component2 .loading,.loading-component2 .loading svg{width:128px}.loading-component2 .loading svg #c,.loading-component2 .loading svg #t,.loading-component2 .loading svg #dash{color:var(--letter-color);opacity:0;transition:opacity .15s ease-in}.loading-component2 .loading svg #cursor{transform:translateX(calc(var(--letter-width) * -3));color:var(--cursor-color);opacity:1;transition:transform .1s ease-out}.loading-component2.inactive{opacity:0;pointer-events:none;transition:opacity .3s ease-out}
:root{--code-font-color:#232529;--code-background-color:var(--gray-0);--code-border-color:var(--gray-3);--terminal-background-color:white;--terminal-bar:-webkit-linear-gradient(top, #ebebeb, #d5d5d5);--terminal-accent:white;--terminal-border:#cecbce;--string:#3b9039;--variable:#383a41;--property:#565656;--number:#da7430;--operator:#a87200;--punctuation:#5c6d74;--comment:#869496;--function:#0582b7;--keyword:#a208ba;--attribute:#a87200;--class:#c52387;--tag:#365ccd;--error:#b0292c;--code-link-hover:var(--link);--highlight-code-color:#74cf7433}pre{border:0}code[class*=language-],pre[class*=language-]{-webkit-font-smoothing:subpixel-antialiased;color:var(--code-font-color);font-family:"Menlo", var(--font-family-monospace);text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:2;-webkit-hyphens:none;hyphens:none;font-size:.85rem;line-height:1.55}@media screen and (min-width:700px){code[class*=language-],pre[class*=language-]{font-size:.9rem}}pre[class*=language-]{background:var(--code-background-color);border-radius:6px;margin-top:1.5rem;margin-bottom:1.5rem;padding:1rem;overflow:auto hidden}code.language-text{color:var(--font-color-base);border:none}:not(pre)>code[class*=language-]{-webkit-font-smoothing:subpixel-antialiased;background:var(--inline-code-background-color);font-family:"Menlo", var(--font-family-monospace);color:var(--font-color-base);border:1px solid var(--code-border-color);border-radius:6px;padding:.12rem .3rem;font-size:85%;font-weight:500}:not(pre)>a code[class*=language-]{color:var(--link)}:not(pre)>a code[class*=language-]:hover{color:var(--code-link-hover)}code.language-shell:before{content:"$ ";color:var(--comment)}.gatsby-highlight{border-top:1px solid var(--code-border-color);border-bottom:1px solid var(--code-border-color);background:var(--code-background-color);-moz-text-size-adjust:none;text-size-adjust:none;border-radius:0;max-width:calc(100% + 2.5rem);margin:1.5rem -1.5rem;overflow:auto}@media screen and (min-width:700px){.gatsby-highlight{border:1px solid var(--code-border-color);border-radius:6px;max-width:100%;margin:1.5rem 0}}.gatsby-highlight[data-language=terminal]{box-shadow:none;background:0 0;margin-left:0;margin-right:0;padding:0;overflow:auto;box-shadow:0 15px 20px #0000000d,0 5px 7px #00000008}.gatsby-highlight[data-language=text]{background:0 0;border:none;margin:0 0 1.5rem;padding:0}.gatsby-highlight-code-line{background-color:var(--highlight-code-color);border-left:4px solid #74cf74;margin-left:-1rem;margin-right:-1.5rem;padding-left:calc(1rem - 4px);display:block}.gatsby-highlight-code-line .gatsby-highlight-code-line{background-color:#0000}@media screen and (min-width:700px){.gatsby-highlight-code-line{border-left:4px solid #74cf74;margin-left:-1.5rem;margin-right:-1.5rem;padding-left:calc(1.5rem - 4px)}}.gatsby-highlight pre[class*=language-]{overflow:initial;float:left;background-color:#0000;min-width:100%;margin:0;padding:1.5rem}.gatsby-highlight:after{content:"";clear:both;display:table}.gatsby-highlight pre.language-terminal{white-space:unset;-webkit-text-size-adjust:none;border:1px solid var(--terminal-border);background:var(--terminal-background-color);border-radius:6px;max-width:100%;padding:3rem 1rem 1rem;position:relative}.gatsby-highlight pre.language-text{-webkit-font-smoothing:subpixel-antialiased;box-shadow:none;color:var(--terminal-color);background:0 0;border:none;margin:0;padding:0}code.language-terminal{-webkit-font-smoothing:antialiased;color:var(--terminal-color);-moz-text-size-adjust:none;text-size-adjust:none;white-space:pre-wrap;word-break:break-all}pre.language-terminal:before{content:"•••";background:var(--terminal-bar);color:#a19ea1;border-top:1px solid var(--terminal-accent);border-bottom:1px solid var(--border-color);text-indent:6px;letter-spacing:-5px;border-bottom:1px solid var(--border-color);border-top-left-radius:6px;border-top-right-radius:6px;width:100%;margin:0;padding:15px 0 12px;font-size:2.5rem;line-height:0;position:absolute;top:0;left:0}.filename{background:var(--file-background);color:var(--font-color-base);border-top:1px solid var(--code-border-color);border-bottom:1px solid var(--code-border-color);border-radius:0;justify-content:center;align-items:center;max-width:calc(100% + 2.5rem);margin-bottom:-1.9rem;margin-left:-1.5rem;margin-right:-1.5rem;padding:.4rem 1rem .8rem;font-size:.9rem;font-weight:500;line-height:1.5;display:flex}@media screen and (min-width:700px){.filename{border:1px solid var(--code-border-color);border-top-left-radius:6px;border-top-right-radius:6px;max-width:100%;margin-left:0;margin-right:0}}.token.comment,.token.prolog,.token.doctype,.token.cdata,.token.important{color:var(--comment)}.token.punctuation{color:var(--punctuation)}.token.namespace{opacity:.7}.token.property{color:var(--property)}.token.tag,.token.constant,.token.symbol,.token.deleted{color:var(--tag)}.token.number{color:var(--number)}.token.char,.token.builtin,.token.url,.token.inserted{color:var(--code-font-color)}.token.attr-name,.token.selector{color:var(--attribute)}.token.attr-value,.token.string{color:var(--string)}.token.operator{color:var(--operator)}.token.atrule,.token.keyword{color:var(--keyword)}.token.function{color:var(--function)}.language-css,.token.boolean,.token.class-name{color:var(--class)!important}.token.regex{color:var(--keyword)}.token.variable{color:var(--variable)}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.language-jsx .token.class-name{color:var(--tag)!important}pre::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}pre::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}code::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}code::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}pre::selection,pre::selection,code::selection,code::selection{text-shadow:none;color:inherit;background:#9696964d!important}pre[class*=language-]::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}pre[class*=language-]::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}code[class*=language-] ::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}code[class*=language-] ::-moz-selection{text-shadow:none;color:inherit;background:#9696964d!important}pre[class*=language-]::selection,pre[class*=language-]::selection,code[class*=language-] ::selection,code[class*=language-] ::selection{text-shadow:none;color:inherit;background:#9696964d!important}
