:root{--text:#9ca3af;--text-h:#f3f4f6;--far-bg:#111517;--bg:#161b1d;--border:#2e373a;--code-bg:#1f2528;--accent:#78dbff;--accent-bg:#78dbff26;--accent-border:#40c1ec80;--accent2:#ffb729;--accent2-bg:#ffb72926;--accent2-border:#ffb72980;--social-bg:#2f303a80;--shadow:#0006 0 6px 15px -3px, #00000040 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;--border-radius:10px;font-family:var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--far-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}#root{text-align:center;box-sizing:border-box;flex-direction:column;gap:.5rem;width:max(50svw,1024px);max-width:100%;min-height:100svh;margin-inline:auto;padding-block-end:.5rem;padding-inline:.5rem;display:flex}html{scrollbar-gutter:stable both-edges}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}p{margin:0}code{font-family:var(--mono);border-radius:var(--border-radius);color:var(--text-h);background:var(--code-bg);padding:.25rem .5rem;line-height:135%;display:inline-flex}.page-section{border-radius:var(--border-radius);background:var(--bg);border:1px solid var(--border);opacity:0;animation:.5s forwards fadeIn;overflow:hidden}.page-section .section-title{color:var(--accent-border);background:var(--bg);text-align:start;border-block-end:1px solid var(--border);border-block-start:.6rem solid var(--border);padding-block:.5rem;padding-inline-start:1rem;font-size:80%;font-weight:700}@keyframes fadeIn{0%{translate:0 .5cm}to{opacity:1}}.row-group{gap:.5rem;display:flex}@media (aspect-ratio<=1){.row-group{flex-direction:column}}.capsule{background:var(--border);color:var(--text-h);border-radius:9999vw;padding:.3rem .5rem}.capsule.capsule-accent{background:var(--accent-bg);color:var(--accent-border)}.capsule span{color:var(--text)}button,.button{background-color:var(--accent-border);color:var(--text-h);border-radius:var(--border-radius);cursor:pointer;border:none;padding:.3rem .7rem;font-size:medium;text-decoration:none;transition:background-color .1s}:is(button,.button):hover{background-color:#40c1ecbf}:is(button,.button):active{background-color:#40c1ec59}.shine{position:relative}.shine:before{content:"";z-index:-1;background:linear-gradient(90deg, var(--accent-bg) 0%, var(--accent-bg) 33%, var(--accent-border) 67%, var(--accent-bg) 100%);opacity:0;width:calc(300% + 12rem);transition:opacity .15s,left .75s ease-out;position:absolute;top:0;bottom:0;left:-2rem}.shine:hover:before{opacity:.15;left:calc(-200% - 10rem)}.shine.shine2:before{background:linear-gradient(90deg, var(--accent2-bg) 0%, var(--accent2-bg) 33%, var(--accent2-border) 67%, var(--accent2-bg) 100%)}#header{z-index:1;height:fit-content;box-shadow:var(--shadow);border-top:none;border-top-left-radius:0;border-top-right-radius:0;flex-direction:row;justify-content:flex-end;align-items:center;display:flex;position:sticky;top:0;translate:0!important}#header #header-image{background:var(--accent);aspect-ratio:1;height:2ex;margin-left:.75rem;margin-right:auto;-webkit-mask-image:url(/assets/epsilon-BGLtZFm0.png);mask-image:url(/assets/epsilon-BGLtZFm0.png);-webkit-mask-size:100%;mask-size:100%}@media (aspect-ratio<=1){#header #header-image{display:none}}#header #header-underline{background-color:var(--accent);height:2px;position:absolute;bottom:0}#header #header-underline.transition-enabled{transition:width .2s,left .2s ease-out}#header a{color:var(--text);border-bottom:2px solid #0000;min-width:4rem;padding:.4rem 1rem;text-decoration:none;transition:border-color .3s,background .3s}#header a.selected-page{font-weight:700}#header a:hover{background:var(--accent-bg);border-color:var(--accent-border)}#header a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (aspect-ratio<=1){#header a{flex:1}}@media (aspect-ratio<=1){#header{justify-content:space-evenly}}#bio{text-align:left;flex-direction:row;justify-content:flex-start;align-items:flex-end;gap:1cm;padding-block-start:1rem;padding-inline-end:20%;display:flex;position:relative}@media (aspect-ratio<=1){#bio{flex-direction:column;height:auto;padding-inline:5%}}#bio:before{content:"";z-index:-1;opacity:.2;background:repeating-linear-gradient(135deg, var(--accent), var(--accent) 10px, #78dbffe6 10px, #78dbffe6 20px);width:100%;height:100%;position:absolute;top:50%;left:0;translate:0 -50%;-webkit-mask:linear-gradient(90deg,#fff,#0000);mask:linear-gradient(90deg,#fff,#0000)}@media (aspect-ratio<=1){#bio:before{-webkit-mask:linear-gradient(#fff,#01010180);mask:linear-gradient(#fff,#01010180)}}#bio #headshot-container{aspect-ratio:1;height:14rem;position:relative}@media (aspect-ratio<=1){#bio #headshot-container{display:none}}#bio #headshot{object-fit:contain;max-height:100%;overflow:hidden}#bio #bio-header-container{margin-block-end:1rem}#bio #bio-header{color:var(--accent-bg);-webkit-text-stroke:1px var(--accent-border);line-height:50%}#bio #bio-subheader{flex-wrap:wrap;gap:.5rem;display:flex}#bio #bio-text{margin-block-end:1rem}#featured .section-title{color:var(--accent2-border)}#featured #featured-card-container{flex-direction:row;justify-content:flex-start;align-items:center;gap:4rem;display:flex}@media (aspect-ratio<=1){#featured #featured-card-container{flex-direction:column;gap:1rem}}#featured #featured-card-container{cursor:pointer;margin-block:1rem;margin-inline:5%}#featured #featured-card-container #featured-logo p{font-size:3rem;font-weight:700}#featured #featured-card-container #featured-logo{align-items:baseline;gap:.5rem;display:flex}#featured #featured-card-container #featured-logo img{object-fit:contain;min-height:2rem;max-height:2rem}#featured #featured-card-container p{text-align:start;font-size:large}#featured #featured-card-container{position:relative}.timeline-entry{grid-gap:1rem 2rem;text-align:start;grid-template-columns:auto 1fr;grid-template-areas:"icon header""icon skills""icon description";padding-block:1rem;padding-inline:20%;display:grid;position:relative}@media (aspect-ratio<=1){.timeline-entry{grid-template-areas:"icon header""skills skills""description description";padding-inline:5%}}.timeline-entry+.timeline-entry{border-block-start:1px solid var(--border)}.timeline-entry .timeline-entry-icon{object-fit:contain;border-radius:var(--border-radius);border:1px solid var(--accent-bg);grid-area:icon;min-width:3.5rem;max-width:3.5rem;height:3.5rem;overflow:hidden}.timeline-entry .timeline-entry-header{flex-direction:column;grid-area:header;gap:.5rem;display:flex}.timeline-entry .timeline-entry-skills{flex-wrap:wrap;grid-area:skills;gap:.25rem;font-size:small;display:flex}.timeline-entry .timeline-entry-title{color:var(--accent)}.timeline-entry .timeline-entry-date{color:var(--accent-border);font-size:small}.timeline-entry .timeline-entry-description{grid-area:description}.timeline-entry .timeline-entry-link{margin-block-start:1rem;font-size:small}.timeline-entry .timeline-entry-link a{color:var(--accent)}#resume-section{flex:1}#resume-section #resume-section-content{flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding-block:1rem;display:flex}#resume-section #resume-section-content img{object-fit:contain;border-radius:var(--border-radius);cursor:pointer;opacity:.9;width:80%}#resume-pdf-view{z-index:1;width:100%;position:fixed;top:5%;bottom:5%;left:0;overflow-y:scroll}#resume-pdf-view .react-pdf__Document{width:fit-content;margin:auto}#resume-pdf-view .react-pdf__Document a{--user-unit:unset}#resume-pdf-view:before{content:"";background:var(--far-bg);opacity:.5;position:fixed;inset:0}#resume-pdf-click-capture{content:"";z-index:2;width:100%;height:100%;position:absolute;top:0;left:0}:root{--react-pdf-text-layer:1}[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)translate(-100%)}.textLayer{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:0;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));line-height:1;position:absolute;inset:0;overflow:clip}.textLayer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;margin:0;position:absolute}.textLayer>:not(.markedContent),.textLayer .markedContent span:not(.markedContent){z-index:1;--font-height:0;font-size:calc(var(--text-scale-factor) * var(--font-height));--scale-x:1;--rotate:0deg;transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv))}.textLayer .markedContent{display:contents}.textLayer span[role=img]{-webkit-user-select:none;user-select:none;cursor:default}.textLayer .highlight{--highlight-bg-color:#b400aa40;--highlight-selected-bg-color:#00640040;--highlight-backdrop-filter:none;--highlight-selected-backdrop-filter:none;background-color:var(--highlight-bg-color);-webkit-backdrop-filter:var(--highlight-backdrop-filter);backdrop-filter:var(--highlight-backdrop-filter);border-radius:4px;margin:-1px;padding:1px}@media screen and (forced-colors:active){.textLayer .highlight{--highlight-bg-color:Highlight;--highlight-selected-bg-color:ButtonText}}.textLayer .highlight.appended{position:initial}.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:var(--highlight-selected-bg-color);-webkit-backdrop-filter:var(--highlight-selected-backdrop-filter);backdrop-filter:var(--highlight-selected-backdrop-filter)}.textLayer ::selection{background:#0000ff40}@supports (background:color-mix(in srgb, AccentColor, transparent 75%)){.textLayer ::selection{background:color-mix(in srgb, AccentColor, transparent 75%)}}.textLayer br::selection{background:0 0}.textLayer .endOfContent{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{width:0;height:0;display:none;position:absolute;top:0;left:0}:root{--react-pdf-annotation-layer:1;--annotation-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:transparent;--input-disabled-border-color:transparent;--input-hover-border-color:black;--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 .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selecteditem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert();backdrop-filter:invert()}}.annotationLayer{pointer-events:none;transform-origin:0 0;z-index:3;position:absolute;top:0;left:0}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg)translate(-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{width:100%;height:100%;position:absolute}.annotationLayer section{text-align:initial;pointer-events:auto;box-sizing:border-box;transform-origin:0 0;margin:0;position:absolute}.annotationLayer section .overlaidText{width:0;height:0;display:inline-block;position:absolute;top:0;left:0;overflow:hidden}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{width:100%;height:100%;font-size:1em;position:absolute;top:0;left:0}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{cursor:pointer;width:100%;height:100%;position:absolute;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;vertical-align:top;width:100%;height:100%;margin:0}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input: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 .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{border:2px solid var(--input-disabled-border-color);cursor:not-allowed;background:0 0}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);background:0 0;border-radius:2px}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-color:#0000;background-image:none}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);border-radius:2px}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{content:"";background-color:canvastext;display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{width:1px;height:80%;left:45%}.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%;width:50%;height:50%;top:20%;left:30%}.annotationLayer .textWidgetAnnotation input.comb{padding-left:2px;padding-right:0;font-family:monospace}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .popupTriggerArea{width:100%;height:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none;position:absolute}.annotationLayer .popup{max-width:calc(180px * var(--total-scale-factor));box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto;background-color:#ff9;position:absolute}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{margin-left:calc(5px * var(--total-scale-factor));display:inline-block}.annotationLayer .popupContent{margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor));border-top:1px solid #333}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{width:100%;height:100%;position:absolute;top:0;left:0}.annotationLayer .annotationTextContent{opacity:0;color:#0000;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}#education{flex:2;height:fit-content}#education #education-header{text-align:left;display:flex}#education #education-header img{object-fit:contain;border-radius:var(--border-radius);border:1px solid var(--accent-bg);min-width:8rem;max-width:8rem;min-height:8rem;max-height:8rem;margin:1rem}#education #education-header .date{color:var(--accent-border);font-size:small}#education #education-header #gpa{font-size:small}#education #education-cards{justify-content:space-evenly;gap:.5rem;margin:.5rem;display:flex}#education #education-cards>*{background:var(--accent-bg);color:var(--accent-border);border:1px solid var(--accent-bg);border-radius:var(--border-radius);text-align:center;flex:1;justify-content:center;align-items:center;padding:.5rem;display:flex}#about-bio div{text-align:left;flex-direction:column;gap:1rem;margin-block:1rem;margin-inline:10%;display:flex}@media (aspect-ratio<=1){#contact{flex-grow:1}}#contact{flex-direction:column;display:flex}#contact #contact-form{flex-direction:column;flex-grow:1;justify-content:flex-start;align-items:center;gap:1rem;margin-block:1rem;margin-inline:20%;display:flex}@media (aspect-ratio<=1){#contact #contact-form{margin-inline:5%}#contact #contact-form button{width:100%;padding-block:1rem}}#contact #contact-form{text-align:left}#contact #contact-form span.status-inactive{-webkit-user-select:none;user-select:none;opacity:0}#contact #contact-form span.status-success{color:var(--accent)}#contact #contact-form span.status-failed{color:var(--accent2)}#contact #contact-form>div{flex-direction:column;gap:.25rem;width:100%;display:flex}#contact #contact-form>div input,#contact #contact-form>div textarea{border:1px solid var(--border);background:var(--code-bg);border-radius:var(--border-radius);color:var(--text);padding:.4rem}:is(#contact #contact-form>div input,#contact #contact-form>div textarea):focus{outline:2px solid var(--accent-border)}#contact #contact-form>div textarea{resize:vertical;min-height:6rem}@media (aspect-ratio<=1){#contact #contact-form>div:has(textarea){flex:1}#contact #contact-form>div:has(textarea) textarea{flex:1}}
