@import url(https://db.onlinewebfonts.com/c/17241fb9c2ffb3ec11eba762e771435f?family=Suisse+Int'l+Book);:root{--scrollbar-bg:#2a2a2a;--scrollbar-thumb:#444;--scrollbar-thumb-hover:#888}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.6;margin:0;transition:background-color .3s ease,color .3s ease}#root{min-height:100vh;position:relative;width:100%}h1,h2,h3,h4,h5,h6{font-weight:600;margin:0}ol,ul{list-style:none;margin:0;padding:0}a{color:inherit}code{background-color:#1e1e1e;border-radius:4px;font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:.95em;padding:2px 6px}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#2a2a2a;background:var(--scrollbar-bg)}::-webkit-scrollbar-thumb{background-color:#444;background-color:var(--scrollbar-thumb);border:3px solid #2a2a2a;border:3px solid var(--scrollbar-bg);border-radius:10px}::-webkit-scrollbar-thumb:hover{background-color:#888;background-color:var(--scrollbar-thumb-hover)}:focus-visible{outline:2px solid #888;outline-offset:2px}:root{--dark-grey:#384853;--body-grey:#8b949d;--body-grey-lighter:#868a8ead;--accent:#00bfff;--text-color:#e0e0e0;--bg-color:#121212}body{background-color:#121212;background-color:var(--bg-color);color:#e0e0e0;color:var(--text-color);font-family:Suisse Int\'l Boo,Helvetica,Arial,sans-serif;width:100%}.heading,h1{font-size:1.5rem}.heading{font-weight:700}.body{left:0;margin:0 auto;padding-top:2vh;top:0;width:95%}a{color:#e0e0e0;color:var(--text-color);text-decoration:none}a:hover{color:#00bfff;color:var(--accent)}header{align-items:center;background-color:var(--bg-color);border-bottom:1px solid #333;display:flex;justify-content:space-between;left:0;padding:1.5vh 2vw;position:relative;top:0;transition:background-color .3s ease,-webkit-backdrop-filter .3s ease;transition:background-color .3s ease,backdrop-filter .3s ease;transition:background-color .3s ease,backdrop-filter .3s ease,-webkit-backdrop-filter .3s ease;width:100%;z-index:1000}.sticky{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#121212f2;position:-webkit-sticky;position:sticky;top:0}.name{font-weight:700;margin:0;text-transform:uppercase}.name a{color:var(--text-color);text-decoration:none}.nav-container{align-items:center;display:flex;gap:2rem;justify-content:center;margin-right:2rem}.nav-container a{color:var(--text-color);font-size:1.2rem;padding-bottom:4px;position:relative;text-decoration:none;transition:color .3s ease}.nav-container a:after{background-color:var(--accent);bottom:-2px;content:"";height:2px;left:0;position:absolute;transform:scaleX(0);transform-origin:left;transition:transform .3s ease;width:100%}.nav-container a.active:after,.nav-container a:hover:after{transform:scaleX(1)}.nav-container a:hover{color:#fff;font-weight:700}.nav-container a.active{color:var(--accent)!important;font-weight:700}.hamburger{cursor:pointer;display:none;flex-direction:column;z-index:1100}.hamburger span{background-color:#e0e0e0;border-radius:4px;height:3px;margin:4px 0;transition:transform .3s ease,opacity .3s ease;width:28px}.hamburger span.open:first-child{transform:rotate(45deg) translate(6px,6px)}.hamburger span.open:nth-child(2){opacity:0}.hamburger span.open:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}@media (max-width:767px){.hamburger{display:flex;position:absolute;right:1.5rem;top:1.5rem}.nav-container{background-color:var(--bg-color);flex-direction:column;left:0;opacity:0;padding:1rem 2rem;pointer-events:none;position:absolute;top:100%;transform:translateY(-20px);transition:all .3s ease;width:100%}.nav-container.show{opacity:1;pointer-events:auto;transform:translateY(0)}.nav-container a{font-size:1.1rem;padding:.8rem 0;text-align:left}}.self-wrapper{bottom:0;left:2vw;overflow-x:hidden;overflow-y:auto;padding-top:3vh;position:fixed;right:3vw;top:calc(5vh + 51px)}.self-intro{display:flex;flex-direction:row;width:100%}.self-pic{object-fit:cover;object-position:70%;padding-right:2vw;width:40%}.self-text{flex:1 1;min-width:0}.self-heading{font-size:1.5rem;font-weight:700}.self-info{display:flex;flex-direction:column;margin-top:2vh}.self-contact{padding-top:3vh}.self-contact a{padding-right:2vw}.self-contact a,.self-text a{color:var(--body-grey);text-decoration:underline}ul{margin:0;padding-left:1.2rem}@media screen and (max-width:768px){.self-wrapper{left:0;padding:1rem;right:0}.self-intro{flex-direction:column}.self-pic{padding-bottom:2vh;padding-right:0;width:100%}}.experience-header{display:flex;justify-content:space-between}p,ul{margin:0}.experience-position{color:var(--body-grey)}.intro-container{bottom:0;left:calc(35% + 4vw);overflow:auto;padding-top:3vh;position:fixed;right:3vw;top:calc(5vh + 51px)}.about-intro-container{display:flex;left:0;position:relative;top:0}.pic{object-fit:cover;object-position:70%;padding-right:2vw;width:40%}.contact{padding-top:3vh}.contact a{padding-right:2vw}.contact a,.intro-container a{color:var(--body-grey);text-decoration:underline}.heading a{color:#000}.info-section{align-items:center;display:flex;margin-bottom:5vh}.info-section img{height:40vh;object-fit:cover;object-position:70%;padding-left:2vw;width:40vh}@media screen and (max-width:768px){.about{bottom:0;display:flex;flex-direction:column;overflow:auto;position:fixed;top:calc(5vh + 51px)}.about .intro-container{order:2}.about .sidebar-container{order:1}.intro-container.about-intro-container{flex-direction:column;width:90%}.info-section{flex-direction:column}.pic{padding-bottom:5vh;width:100%}}.description{border-bottom:1px solid var(--body-grey-lighter);color:var(--text-color);padding-bottom:1vh;padding-top:3vh;width:100%}.certification-container,.experience-container{border-left:2px solid var(--body-grey-lighter);margin-bottom:1.5rem;padding-left:1rem}.certification-header,.experience-header{align-items:center;display:flex;justify-content:space-between}.certification-header a,.experience-header a{color:var(--text-color);font-size:1.1rem;font-weight:600;text-decoration:none}.certification-header a:hover,.experience-header a:hover{text-decoration:underline}.certification-dates,.experience-dates{color:var(--body-grey);font-size:.9rem}.certification-position,.experience-position{color:var(--body-grey);font-style:italic;margin:.2rem 0 .6rem}.bio{font-weight:500}.bio,.section-header{color:var(--text-color);font-size:1.3rem}.section-header{font-weight:700}.projects-header{border-bottom:1px solid var(--body-grey-lighter);padding-bottom:1vh}.pt-6{padding-top:6vh}.project-links{border-bottom:1px solid var(--body-grey-lighter);border-collapse:collapse;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));justify-content:center;margin-bottom:2vh;padding:1vh 0}.project-links p{color:var(--text-color);padding-bottom:2px;transition:all .25s ease}.project-links p:hover,.selected-project{color:var(--accent);cursor:pointer;font-weight:bolder}.project-images{display:flex;transition:all .25s ease;width:100%}.project-images:hover{opacity:.7}.project-images img{max-height:400px;object-fit:cover;padding-right:1vh;width:100%}.project-heading{font-size:2.3rem;padding-top:3vh;text-decoration:none;text-transform:uppercase}.project-experience:hover{color:var(--accent);cursor:pointer}.project-experience:hover a{color:var(--accent)!important}.mobile-project-info{display:none;padding-top:1.5vh}@media screen and (max-width:768px){.mobile-project-info{display:none}.project-links{font-size:.9rem;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));text-align:center}.projects-container{padding:1rem 0}.project-images img{max-height:250px}.project-heading{font-size:1.5rem;padding-top:2vh}}.sidebar-container{background-color:var(--bg-color);border-right:1px solid var(--body-grey-lighter);bottom:0;overflow:auto;position:fixed;top:calc(5vh + 51px);width:35%}.sidebar-item{border-bottom:1px solid var(--body-grey-lighter);color:var(--text-color);padding:2vh 1vw 2vh 0;width:95%}.sidebar-item:last-child{border-bottom:none}@media screen and (max-width:768px){.sidebar-container{border-right:none;border-top:1px solid var(--body-grey-lighter);width:95%}.intro-container,.sidebar-container{overflow:visible;overflow:initial;position:static}.intro-container{padding-bottom:4vh}}:root{--react-pdf-annotation-layer:1;--annotation-unfocused-field-background:url('data:image/svg+xml;charset=utf-8,<svg width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="fill:rgba(0,54,255,.13)"/></svg>');--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:#0000;--input-disabled-border-color:#0000;--input-hover-border-color:#000;--link-outline:none}@media screen and (forced-colors:active){:root{--input-focus-border-color:CanvasText;--input-unfocused-border-color:ActiveText;--input-disabled-border-color:GrayText;--input-hover-border-color:Highlight;--link-outline:1.5px solid LinkText}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .textWidgetAnnotation :is(input,textarea):required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{left:0;pointer-events:none;position:absolute;top:0;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translateX(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{height:100%;position:absolute;width:100%}.annotationLayer section{box-sizing:border-box;margin:0;pointer-events:auto;position:absolute;text-align:left;text-align:initial;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:none;outline:var(--link-outline)}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{font-size:1em;height:100%;left:0;position:absolute;top:0;width:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{background:#ff0;box-shadow:0 2px 10px #ff0;opacity:.2}.annotationLayer .textAnnotation img{cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input,.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .textWidgetAnnotation :is(input,textarea){background-image:url('data:image/svg+xml;charset=utf-8,<svg width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="fill:rgba(0,54,255,.13)"/></svg>');background-image:var(--annotation-unfocused-field-background);border:2px solid #0000;border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px*var(--scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .textWidgetAnnotation :is(input,textarea):required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled]{background:none;border:2px solid #0000;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .textWidgetAnnotation :is(input,textarea):hover{border:2px solid #000;border:2px solid var(--input-hover-border-color)}.annotationLayer .buttonWidgetAnnotation.checkBox input:hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .textWidgetAnnotation :is(input,textarea):hover{border-radius:2px}.annotationLayer .choiceWidgetAnnotation select:focus,.annotationLayer .textWidgetAnnotation :is(input,textarea):focus{background:none;border:2px solid Highlight;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:1px solid Canvas;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-color:initial;background-image:none}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid Highlight;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:1px solid Canvas;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid Highlight;border:2px solid var(--input-focus-border-color);outline:1px solid Canvas;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{font-size:calc(9px*var(--scale-factor));min-width:calc(180px*var(--scale-factor));pointer-events:none;position:absolute;width:100%}.annotationLayer .popup{word-wrap:break-word;background-color:#ff9;border-radius:calc(2px*var(--scale-factor));box-shadow:0 calc(2px*var(--scale-factor)) calc(5px*var(--scale-factor)) #888;cursor:pointer;font:message-box;margin-left:calc(5px*var(--scale-factor));max-width:calc(180px*var(--scale-factor));padding:calc(6px*var(--scale-factor));pointer-events:auto;position:absolute;white-space:normal}.annotationLayer .popup>*{font-size:calc(9px*var(--scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px*var(--scale-factor))}.annotationLayer .popupContent{border-top:1px solid #333;margin-top:calc(2px*var(--scale-factor));padding-top:calc(2px*var(--scale-factor))}.annotationLayer .richText>*{font-size:calc(9px*var(--scale-factor));white-space:pre-wrap}.annotationLayer .caretAnnotation,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .fileAttachmentAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .highlightAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .lineAnnotation svg line,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .squareAnnotation svg rect,.annotationLayer .squigglyAnnotation,.annotationLayer .stampAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .underlineAnnotation{cursor:pointer}.annotationLayer section svg{height:100%;left:0;position:absolute;top:0;width:100%}.annotationLayer .annotationTextContent{color:#0000;height:100%;opacity:0;pointer-events:none;position:absolute;-webkit-user-select:none;user-select:none;width:100%}.annotationLayer .annotationTextContent span{display:inline-block;width:100%}:root{--react-pdf-text-layer:1;--highlight-bg-color:#b400aa;--highlight-selected-bg-color:#006400}@media screen and (forced-colors:active){:root{--highlight-bg-color:Highlight;--highlight-selected-bg-color:ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translateX(-100%)}.textLayer{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;inset:0;line-height:1;overflow:hidden;position:absolute;text-align:left;text-align:initial;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:#0000;cursor:text;margin:0;position:absolute;transform-origin:0 0;white-space:pre}.textLayer span.markedContent{height:0;top:0}.textLayer .highlight{background-color:#b400aa;background-color:var(--highlight-bg-color);border-radius:4px;margin:-1px;padding:1px}.textLayer .highlight.appended{position:static}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:#006400;background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:#0000}.textLayer .endOfContent{cursor:default;display:block;inset:100% 0 0;position:absolute;-webkit-user-select:none;user-select:none;z-index:-1}.textLayer .endOfContent.active{top:0}.resume-section{background-color:var(--bg-color);color:var(--text-color);min-height:100vh;padding:60px 20px;position:relative;text-align:center;z-index:1}.project-heading{color:var(--text-color);font-size:2.2rem;font-weight:700}.purple{color:#aaa}.resume{align-items:center;flex-direction:column;margin:30px auto}.react-pdf__Document,.resume{display:flex;justify-content:center}.react-pdf__Document{background-color:initial;border-radius:10px;overflow-x:auto;padding:10px;width:100%}.react-pdf__Page{box-shadow:0 4px 20px #0006;margin:0 auto}.resume-section .btn-primary{background-color:#333;border-color:#333;border-radius:6px;color:#fff;font-size:1.1rem;font-weight:500;padding:.6rem 1.2rem;transition:background-color .3s ease,transform .2s ease}.resume-section .btn-primary:hover{background-color:#000;border-color:#000;transform:translateY(-2px)}.download-button-row{display:flex;justify-content:center;margin-top:30px}@media (max-width:768px){.project-heading{font-size:1.8rem}.resume-section{padding:40px 10px}.resume-section .btn-primary{font-size:1rem;padding:.5rem 1rem}}
/*# sourceMappingURL=main.0330a88f.css.map*/