@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=Mulish:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;0,1000;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900;1,1000&family=Noto+Sans+Mono:wght@100;200;300;400;500;600;700;800;900&family=PT+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800&family=Raleway:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,800;0,900;1,100;1,200;1,300;1,400;1,500&family=Roboto+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800&display=swap";*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.z-0{z-index:0}.z-\[-1\]{z-index:-1}.mx-auto{margin-left:auto;margin-right:auto}.hidden{display:none}.h-auto{height:auto}.w-full{width:100%}.max-w-7xl{max-width:80rem}.px-16{padding-left:4rem;padding-right:4rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[25px\]{font-size:25px}.text-\[30px\]{font-size:30px}.text-\[35px\]{font-size:35px}.font-black{font-weight:900}.font-light{font-weight:300}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-wider{letter-spacing:.05em}.text-\[\#434343\]{--tw-text-opacity: 1;color:rgb(67 67 67 / var(--tw-text-opacity))}.text-secondary{--tw-text-opacity: 1;color:rgb(170 166 195 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}*{margin:0;padding:0;box-sizing:border-box;font-family:Poppins,sans-serif;scroll-behavior:smooth}.hash-span{margin-top:-100px;padding-bottom:100px;display:block}.black-gradient{background:#000000;background:linear-gradient(to right,#434343,#000000)}.violet-gradient{background:#804dee;background:linear-gradient(-90deg,#804dee 0%,rgba(60,51,80,0) 100%);background:-webkit-linear-gradient(-90deg,#804dee 0%,rgba(60,51,80,0) 100%)}.green-pink-gradient{background:"#00cea8";background:linear-gradient(90.13deg,#00cea8 1.9%,#bf61ff 97.5%);background:-webkit-linear-gradient(-90.13deg,#00cea8 1.9%,#bf61ff 97.5%)}.orange-text-gradient{background:#f12711;background:linear-gradient(to top,#f12711,#f5af19);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.green-text-gradient{background:#11998e;background:linear-gradient(to top,#11998e,#38ef7d);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.blue-text-gradient{background:#56ccf2;background:linear-gradient(to top,#2f80ed,#56ccf2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.pink-text-gradient{background:#ec008c;background:linear-gradient(to top,#ec008c,#fc6767);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.canvas-loader{font-size:10px;width:1em;height:1em;border-radius:50%;position:relative;text-indent:-9999em;animation:mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes mulShdSpin{0%,to{box-shadow:0 -2.6em #fff,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #ffffff80,-1.8em -1.8em #ffffffb3}12.5%{box-shadow:0 -2.6em #ffffffb3,1.8em -1.8em #fff,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #ffffff80}25%{box-shadow:0 -2.6em #ffffff80,1.8em -1.8em #ffffffb3,2.5em 0 #fff,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}37.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #ffffff80,2.5em 0 #ffffffb3,1.75em 1.75em #fff,0 2.5em #fff3,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}50%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #ffffff80,1.75em 1.75em #ffffffb3,0 2.5em #fff,-1.8em 1.8em #fff3,-2.6em 0 #fff3,-1.8em -1.8em #fff3}62.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #ffffff80,0 2.5em #ffffffb3,-1.8em 1.8em #fff,-2.6em 0 #fff3,-1.8em -1.8em #fff3}75%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #ffffff80,-1.8em 1.8em #ffffffb3,-2.6em 0 #fff,-1.8em -1.8em #fff3}87.5%{box-shadow:0 -2.6em #fff3,1.8em -1.8em #fff3,2.5em 0 #fff3,1.75em 1.75em #fff3,0 2.5em #fff3,-1.8em 1.8em #ffffff80,-2.6em 0 #ffffffb3,-1.8em -1.8em #fff}}@media (min-width: 640px){.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\:text-\[18px\]{font-size:18px}.sm\:text-\[20px\]{font-size:20px}.sm\:text-\[30px\]{font-size:30px}.sm\:text-\[50px\]{font-size:50px}.sm\:text-\[55px\]{font-size:55px}}@media (min-width: 768px){.md\:text-\[60px\]{font-size:60px}}@media (min-width: 1024px){.lg\:text-\[20px\]{font-size:20px}.lg\:text-\[40px\]{font-size:40px}.lg\:text-\[60px\]{font-size:60px}.lg\:leading-\[20px\]{line-height:20px}.lg\:leading-\[30px\]{line-height:30px}.lg\:leading-\[98px\]{line-height:98px}}:root{color:#171719;background:#fff;font-family:Mulish,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{min-width:320px;margin:0;background:#fff;color:#171719}body,button,a,*{font-family:Mulish,Arial,sans-serif}a{color:inherit}.portfolio-page{width:min(100% - 48px,1440px);margin:0 auto}.site-header{position:sticky;z-index:10;top:0;display:flex;min-height:82px;align-items:center;justify-content:space-between;border-bottom:1px solid #eeeeef;background:rgb(255 255 255 / 94%);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.wordmark{font-size:36px;font-weight:800;letter-spacing:-3px;line-height:1;text-decoration:none}.primary-navigation{display:flex;align-items:center;gap:clamp(24px,4vw,56px)}.primary-navigation a{font-size:15px;text-decoration:none;transition:opacity .16s ease}.primary-navigation a:hover,.primary-navigation a:focus-visible{opacity:.58}.menu-toggle{display:none}.portfolio-layout{display:grid;grid-template-columns:minmax(310px,.78fr) minmax(0,1.35fr);gap:clamp(32px,4vw,56px);align-items:start}.intro-panel{position:sticky;top:108px;display:flex;min-height:calc(100vh - 108px);flex-direction:column;justify-content:space-between;padding:clamp(44px,7vh,82px) clamp(28px,4vw,54px) 36px 0;border-right:1px solid #d5d5d7;scroll-margin-top:105px}.eyebrow{margin:0;color:#5f5f64;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;letter-spacing:.16em;line-height:1.6;text-transform:uppercase}.intro-panel .eyebrow{white-space:nowrap}.intro-panel .eyebrow span{padding:0 5px}.intro-panel h1{margin:36px 0 30px;font-size:clamp(50px,4.7vw,66px);font-weight:800;letter-spacing:-.06em;line-height:1}.intro-copy{max-width:390px;margin:0;color:#55555a;font-size:clamp(17px,1.7vw,21px);line-height:1.55}.scroll-cue{display:inline-flex;width:52px;height:58px;align-items:center;justify-content:center;margin-top:46px;font-size:42px;font-weight:300;text-decoration:none;transition:transform .16s ease}.scroll-cue:hover{transform:translateY(5px)}.intro-footer{display:flex;flex-direction:column;gap:12px;color:#64646a;font-size:13px}.contact-cta{width:-moz-fit-content;width:fit-content;color:inherit;text-decoration-color:#b7b7bb;text-underline-offset:4px}.contact-cta:hover,.contact-cta:focus-visible{color:#171719;text-decoration-color:currentColor}.social-links{display:flex;align-items:center;gap:16px}.social-links a{display:inline-flex;align-items:center;opacity:.75;transition:opacity .16s ease}.social-links a:hover,.social-links a:focus-visible{opacity:1}.social-links box-icon{filter:brightness(0)}.portfolio-content{min-width:0;padding-top:24px}.content-section{padding:22px 0 42px;scroll-margin-top:98px}.section-heading{margin-bottom:20px}.section-heading .eyebrow{display:none}.section-heading h2,.contact-section h2{margin:0;font-size:clamp(30px,3vw,38px);font-weight:800;letter-spacing:-.06em;line-height:1.15}.project-row{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.18fr);gap:clamp(20px,3vw,36px);align-items:center;padding:18px 0 22px;border-bottom:1px solid #d5d5d7}.project-copy{min-width:0}.project-index{margin:0 0 10px;color:#68686d;font-family:IBM Plex Mono,monospace;font-size:12px;text-transform:uppercase}.project-copy h3,.education-item h3{margin:0;font-size:clamp(19px,2vw,24px);font-weight:750;letter-spacing:-.045em;line-height:1.25}.project-description{margin:12px 0 16px;color:#55555a;font-size:15px;line-height:1.5}.project-tags{display:flex;flex-wrap:wrap;gap:10px 18px;margin:0 0 20px;padding:0;color:#4b4b50;font-size:14px;list-style:none}.project-link{display:inline-flex;align-items:center;gap:5px;padding-bottom:3px;border-bottom:1px solid currentColor;font-size:15px;font-weight:600;text-decoration:none}.project-link span{font-size:19px}.project-preview{display:block;overflow:hidden;aspect-ratio:1.58;border:1px solid #ecebed;border-radius:12px;background:#f4f2f4}.project-preview img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .35s ease}.project-preview:hover img{transform:scale(1.035)}.section-copy{max-width:700px;margin:0 0 22px;color:#55555a;font-size:16px;line-height:1.7}.technology-list{display:flex;flex-wrap:wrap;gap:9px;margin:0;padding:0;list-style:none}.technology-list li{padding:8px 12px;border:1px solid #e3e1e4;border-radius:999px;color:#414146;font-size:13px}.education-item{padding:20px 0;border-bottom:1px solid #d5d5d7}.education-heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px}.education-heading p,.education-heading span{margin:7px 0 0;color:#626268;font-size:14px}.education-heading span{flex:0 0 auto;font-family:IBM Plex Mono,monospace;font-size:11px}.education-description{margin:14px 0 0;color:#55555a;font-size:14px;line-height:1.6}.contact-section{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:34px 0 52px}.contact-section .eyebrow{margin-bottom:8px}.contact-heading-link{text-decoration:none;text-decoration-color:#b7b7bb;text-underline-offset:5px}.contact-heading-link:hover,.contact-heading-link:focus-visible{text-decoration:underline}.contact-section .social-links{padding-bottom:5px}@media (min-width: 1500px){.portfolio-page{width:min(100% - 80px,1440px)}}@media (max-width: 900px){.portfolio-layout{grid-template-columns:minmax(260px,.75fr) minmax(0,1.25fr);gap:30px}.intro-panel{padding-right:26px}.intro-panel .eyebrow{white-space:normal}.project-row{grid-template-columns:1fr}.project-preview{grid-row:1}}@media (max-width: 680px){.portfolio-page{width:min(100% - 36px,560px)}.site-header{min-height:70px}.wordmark{font-size:32px}.menu-toggle{display:inline-flex;align-items:center;padding:8px 0 8px 12px;border:0;background:transparent;color:#171719;font-size:14px;cursor:pointer}.primary-navigation{position:absolute;top:calc(100% - 1px);right:0;left:0;display:none;align-items:stretch;gap:0;padding:8px 18px 14px;border:1px solid #eeeeef;border-top:0;background:#fff}.primary-navigation.is-open{display:flex;flex-direction:column}.primary-navigation a{padding:12px 0}.portfolio-layout{display:block}.intro-panel{position:static;min-height:0;padding:52px 0 34px;border-right:0;border-bottom:1px solid #d5d5d7}.intro-panel h1{margin:28px 0 24px;font-size:clamp(48px,12.5vw,64px)}.intro-copy{max-width:440px;font-size:18px}.scroll-cue{margin-top:22px}.intro-footer{margin-top:24px}.portfolio-content{padding-top:18px}.content-section{padding-top:24px;padding-bottom:28px}.section-heading .eyebrow{display:block;margin-bottom:6px}.project-row{gap:18px;padding:20px 0}.project-preview{aspect-ratio:1.4}.education-heading{align-items:flex-start;flex-direction:column;gap:2px}.education-heading span{margin-top:4px}.contact-section{align-items:flex-start;flex-direction:column}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
