@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 500;font-display:optional;src:url(/assets/ibm-plex-sans-latin.woff2) format("woff2")}:root{color-scheme:dark;--graphite: #090a0a;--primary: #f2f0ea;--secondary: #b7b8b3;--sans: "IBM Plex Sans", "Helvetica Neue", Helvetica, sans-serif}*{box-sizing:border-box}html,body{min-width:320px;min-height:100%;margin:0}body{overflow:hidden;background:var(--graphite);color:var(--primary);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--primary);color:var(--graphite)}.landing{position:relative;isolation:isolate;min-height:100vh;min-height:100svh;overflow:hidden;background:var(--graphite)}#scene{position:absolute;z-index:0;top:-18%;right:-24%;width:86%;height:136%;pointer-events:none}#scene:before{content:"";position:fixed;inset:0;background:url(/assets/protein-fallback.jpg) center / cover no-repeat;opacity:1;transition:opacity .24s ease}#scene canvas{position:relative;z-index:0;display:block;width:100%!important;height:100%!important;pointer-events:none}.sceneUnavailable #scene canvas{opacity:0}.sceneReady #scene:before{opacity:0}.captureSceneOnly .composition{visibility:hidden}.composition{position:relative;z-index:2;min-height:100vh;min-height:100svh;animation:settle .38s cubic-bezier(.22,1,.36,1) both}.identity{position:absolute;top:35vh;left:10.5vw}.wordmark,.thesis{margin:0;font-family:var(--sans);letter-spacing:0}.wordmark{color:var(--primary);font-size:clamp(112px,13vw,188px);font-kerning:normal;font-weight:400;line-height:.84}.thesis{max-width:520px;margin-top:28px;color:#afb0ab;font-size:clamp(19px,1.45vw,23px);font-weight:400;line-height:1.25;text-wrap:pretty}.email{position:absolute;bottom:8vh;left:10.5vw;border-bottom:1px solid transparent;color:var(--secondary);font-family:var(--sans);font-size:clamp(13px,.95vw,15px);font-weight:400;line-height:1.4;letter-spacing:0;opacity:.91;text-decoration:none;transition:border-color .18s ease,opacity .18s ease}.email:hover{border-color:currentColor;opacity:1}.email:focus-visible{outline:2px solid var(--secondary);outline-offset:6px;opacity:1}@keyframes settle{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1680px){.identity{top:37vh}#scene{right:-20%;width:82%}}@media(max-width:1100px){.identity,.email{left:9vw}.identity{top:35vh}#scene{right:-38%;width:98%}}@media(max-width:700px){#scene:before{background-image:url(/assets/protein-fallback-mobile.jpg)}.identity{top:30vh;right:24px;left:24px}.wordmark{font-size:clamp(68px,21vw,96px)}.thesis{max-width:340px;margin-top:26px;font-size:18px;line-height:1.28}.email{bottom:max(28px,6svh);left:24px;font-size:13.5px}#scene{top:-11%;right:-106%;width:188%;height:116%}}@media(max-height:680px)and (min-width:701px){.identity{top:31vh}.email{bottom:6vh}}@media(prefers-reduced-motion:reduce){.composition{animation:none}.email{transition:none}#scene:before{transition:none}}
