@font-face{font-family:Rubik;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/098850a6eb1f8577-s.0g1t.0rh7pnnu.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-88E,U+890-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Rubik;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/6dac7af80352e41b-s.0n5n1r_vv7.6y.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Rubik;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/21445b8bd0ec5702-s.0iuj2wol7j-3b.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Rubik;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/87c7f5b5afcd23bd-s.06avho5za9mi..woff2)format("woff2");unicode-range:U+307-308,U+590-5FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F}@font-face{font-family:Rubik;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/d25394c5b8ff78eb-s.07mp_d91dgmcu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Rubik;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/c9f6ebf08ddd616b-s.p.08ydm43xlmlw2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Rubik Fallback;src:local(Arial);ascent-override:89.06%;descent-override:23.81%;line-gap-override:0.0%;size-adjust:104.98%}.rubik_687ace49-module__hT_19W__className{font-family:Rubik,Rubik Fallback;font-style:normal}.rubik_687ace49-module__hT_19W__variable{--ff-display:"Rubik", "Rubik Fallback"}
@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/91bd2e40df15814e-s.0eq-h7p0~f2-i.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/a63431c4ac64ea8b-s.0-m28h~k~95g~.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8b4ed0a90d903ab5-s.18283yqfiehau.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/c47649aa31f9e140-s.p.11uo_35nso9mn.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk Fallback;src:local(Arial);ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.0%;size-adjust:100.94%}.hanken_grotesk_b6a1207a-module__SrrP9a__className{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.hanken_grotesk_b6a1207a-module__SrrP9a__variable{--ff-body:"Hanken Grotesk", "Hanken Grotesk Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.0h-nw9_c8d~-_.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.10hk62x1-0d9n.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.0bmyfaahigzds.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.0-0ft90hthv3~.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.16fk0g~ypa53a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.0f97p8c3305p~.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.0h-nw9_c8d~-_.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.10hk62x1-0d9n.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.0bmyfaahigzds.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.0-0ft90hthv3~.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.16fk0g~ypa53a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.0f97p8c3305p~.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_48164517-module__iFWrKq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_48164517-module__iFWrKq__variable{--ff-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;src:url(../media/a2947afc6a06879b-s.0gz0.h24vv934.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;src:url(../media/651aaf1801011892-s.0_pfzm~5i7__8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;src:url(../media/75affa71d1e2f6a7-s.p.0e5c5_wyqqx75.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Fallback;src:local(Arial);ascent-override:88.96%;descent-override:21.28%;line-gap-override:0.0%;size-adjust:98.7%}.archivo_3c69b96-module__lAeOJq__className{font-family:Archivo,Archivo Fallback;font-style:normal}.archivo_3c69b96-module__lAeOJq__variable{--ff-headline:"Archivo", "Archivo Fallback"}
*,:before,:after,::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:#3b82f680;--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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono), "JetBrains Mono", ui-monospace, monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-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{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.relative{position:relative}.block{display:block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.hidden{display:none}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.gap-x-\[0\.28em\]{column-gap:.28em}.whitespace-nowrap{white-space:nowrap}.font-\[300\]{font-weight:300}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[-webkit-text-stroke-color\:transparent\]{-webkit-text-stroke-color:transparent}.\[-webkit-text-stroke-width\:var\(--text-stroke-width\)\]{-webkit-text-stroke-width:var(--text-stroke-width)}.\[transition\:font-weight_0\.4s\,_-webkit-text-stroke-color_0\.4s\,_padding_0\.4s\]{transition:font-weight .4s,-webkit-text-stroke-color .4s,padding .4s}.\[will-change\:font-weight\,-webkit-text-stroke-width\,padding\]{will-change:font-weight,-webkit-text-stroke-width,padding}:root{--bg:#000609;--surface:#020f13bd;--surface-2:#06181dbd;--ink:#e3edf1;--ink-2:#adbec3;--muted:#718489;--line:#0e2127;--line-2:#1f353c;--accent:#cb8e72;--accent-ink:#cb8e72;--accent-soft:#cb8e7229;--on-accent:#01090d;--dark:#000102;--dark-surface:#050c0f;--dark-line:#0e2127;--dark-muted:#62757a;--dark-ink:#e3edf1;--radius:6px;--radius-sm:4px;--shadow:0 1px 0 #00000080;--shadow-soft:0 1px 0 #00000059;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--font-display:var(--ff-display), "Rubik", system-ui, sans-serif;--font-body:var(--ff-body), system-ui, sans-serif;--font-mono:var(--ff-mono), ui-monospace, "SFMono-Regular", monospace;--font-headline:var(--ff-headline), "Archivo", system-ui, sans-serif;--pad-x:clamp(20px, 5vw, 96px);--max:1600px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:94px}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-image:radial-gradient(circle at 1px 1px,#e3edf110 1px,#0000 1.6px);background-size:7px 7px;margin:0;font-size:16px;line-height:1.55;overflow-x:hidden}@media (hover:hover) and (pointer:fine){body{background-attachment:fixed}}.hero-inner>*,.project-media,.project-body,.tl-body,.contact-card,.project-livebar,.project-livebar .url{min-width:0}.hero h1,.edu .v,.contact-card .v{overflow-wrap:anywhere}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}img{max-width:100%;display:block}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}.wrap{max-width:var(--max);margin:0 auto}.eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);align-items:center;margin:0 0 14px;font-size:12px;display:inline-flex}.eyebrow:before{content:"";background:var(--accent);border-radius:2px;width:18px;height:3px;margin-right:10px;display:inline-block}.section{padding:clamp(56px, 8vw, 96px) var(--pad-x);background:0 0;position:relative}.section:after{content:"";right:var(--pad-x);bottom:0;left:var(--pad-x);background-image:radial-gradient(circle at 1.5px 1.5px, var(--line-2) 1.1px, transparent 1.6px);background-repeat:repeat-x;background-size:7px 3px;height:3px;position:absolute}.section-head{max-width:var(--max);margin:0 auto clamp(28px,4vw,44px)}.section-head h2{font-family:var(--font-headline);letter-spacing:-.01em;text-wrap:balance;margin:0;font-size:clamp(32px,4.2vw,50px);font-weight:600;line-height:1.05}.section-head p{max-width:64ch;color:var(--ink-2);margin:12px 0 0;font-size:clamp(16px,1.4vw,19px)}.nav{z-index:60;padding:0 var(--pad-x);background:color-mix(in srgb, var(--bg) 42%, transparent);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);opacity:0;pointer-events:none;border-bottom:1px solid #f5f6f314;position:fixed;top:0;left:0;right:0}.nav-inner{height:76px;max-width:var(--max);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.nav-brand{align-items:center;gap:12px;min-width:0;display:flex}.nav-mark{background:var(--accent);width:44px;height:44px;color:var(--on-accent);font-family:var(--font-display);letter-spacing:-.02em;border-radius:12px;flex:none;place-items:center;font-size:20px;font-weight:700;display:inline-grid}.nav-brand-role{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);white-space:nowrap;font-size:17px;font-weight:600}.nav-links{gap:32px;display:flex}.nav-links a{font-family:var(--font-display);letter-spacing:-.005em;color:var(--ink-2);font-size:16px;font-weight:500;transition:color .14s;position:relative}.nav-links a:hover{color:var(--accent-ink)}.nav-links a.is-active{color:var(--ink)}.nav-links a.is-active:after{content:"";background:var(--accent);border-radius:999px;width:4px;height:4px;position:absolute;bottom:-14px;left:50%;transform:translate(-50%)}.nav-right{align-items:center;gap:12px;display:flex}.nav-resume{border:1px solid var(--ink);background:var(--ink);color:var(--bg);font-family:var(--font-display);transition:background .14s ease, border-color .14s ease, transform .16s var(--ease-out);border-radius:999px;align-items:center;gap:8px;padding:11px 18px;font-size:15px;font-weight:600;display:inline-flex}.nav-resume:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.nav-contact{border:1px solid var(--line-2);color:var(--ink);font-family:var(--font-display);transition:border-color .14s ease, background .14s ease, transform .16s var(--ease-out);background:0 0;border-radius:999px;align-items:center;gap:8px;padding:11px 18px;font-size:15px;font-weight:600;display:inline-flex}.nav-contact:hover{border-color:var(--ink);background:var(--surface-2)}.nav-contact svg{width:14px;height:14px}@media (max-width:1180px){.nav-contact span{display:none}.nav-contact{padding:11px 12px}}@media (max-width:1080px){.nav-brand-role{display:none}}.nav-resume svg{width:14px;height:14px}.nav-toggle{border:1px solid var(--line-2);background:var(--surface);width:40px;height:40px;transition:border-color .14s ease, transform .16s var(--ease-out);border-radius:9px;justify-content:center;align-items:center;display:none}.nav-toggle svg{width:18px;height:18px}.nav-mobile{border-top:1px solid var(--line);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);flex-direction:column;padding:8px 0 18px;display:none}.nav-mobile a{border-bottom:1px solid var(--line);font-family:var(--font-display);color:var(--ink-2);padding:14px 4px;font-size:17px;font-weight:500}.nav-mobile.is-open{display:flex}.hero-cover{--hero-ink:#f4ede0;--hero-ink-2:#f4ede0cc;z-index:5;background:#04050a;position:fixed;inset:0;overflow:hidden}.hero-spacer{height:var(--hero-scroll,180vh);position:relative}.hero-plate{object-fit:cover;object-position:58% 44%;width:100%;height:100%;position:absolute;inset:0}.hero-matrix{width:100%;height:100%;display:block;position:absolute;inset:0}.hero-cover:before{content:"";z-index:2;pointer-events:none;background:linear-gradient(100deg,#03050bed 0%,#03050bd1 28%,#03050b85 48%,#03050b2e 64%,#0000 76%);position:absolute;inset:0}.hero-text{z-index:4;text-align:left;max-width:620px;position:absolute;top:38vh;left:9vw}.hero-name-serif{font-family:var(--font-headline);letter-spacing:-.028em;color:#f6f1e6;margin:0;font-size:clamp(40px,4.6vw,76px);font-weight:700;line-height:1.02}.hero-role{font-family:var(--font-body);letter-spacing:.28em;text-transform:uppercase;color:#f6f1e6;margin:26px 0 0;font-size:clamp(11px,.82vw,13px);font-weight:700}.hero-tagline-small{max-width:30ch;font-family:var(--font-body);color:#f4ede0f0;text-wrap:balance;margin:16px 0 0;font-size:15px;font-weight:500;line-height:1.6}.hero-text>*{animation:1.3s cubic-bezier(.22,1,.36,1) both hero-text-settle}.hero-text>:nth-child(2){animation-delay:.14s}.hero-text>:nth-child(3){animation-delay:.26s}@keyframes hero-text-settle{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero-scroll-cue{z-index:4;color:#f6f1e6;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#04060c99;border:1px solid #f6f1e68c;border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;transition:border-color .14s,color .14s,background .14s;animation:2.2s ease-in-out infinite hero-scroll-bob;display:inline-flex;position:absolute;bottom:clamp(20px,4vh,40px);left:50%;transform:translate(-50%)}.hero-scroll-cue:hover{color:#f6f1e6;background:#04060cd1;border-color:#f6f1e6}.hero-scroll-cue svg{width:16px;height:16px}@keyframes hero-scroll-bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,6px)}}@media (max-width:720px){:root{--hero-scroll:110vh}.hero-text{max-width:none;top:6vh;left:7vw;right:7vw}.hero-name-serif{font-size:clamp(32px,9.6vw,47px)}.hero-role{letter-spacing:.22em;margin-top:20px}.hero-tagline-small{display:none}}@media (prefers-reduced-motion:reduce){.hero-cover{height:auto;min-height:100vh;position:relative}.hero-spacer{height:0!important}.hero-scroll-cue{display:none}.hero-text>*{animation:none}}.intro{padding-top:clamp(72px,10vw,120px);padding-bottom:clamp(56px,8vw,88px)}.intro-inner{max-width:62ch;margin:0 auto}.intro-eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 14px;font-size:12.5px;font-weight:600}.intro-line{font-family:var(--font-headline);color:var(--ink);margin:0;font-size:clamp(24px,3vw,34px);font-weight:400;line-height:1.3}.about-grid{max-width:var(--max);grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start;gap:clamp(28px,5vw,96px);margin:0 auto;display:grid}.about-grid .section-head{margin-bottom:0}.about-body{max-width:64ch}@media (max-width:900px){.about-grid{grid-template-columns:1fr;gap:clamp(20px,4vw,32px)}}.about-body p{color:var(--ink-2);break-inside:avoid;margin:0 0 22px;font-size:clamp(18px,1.4vw,22px);line-height:1.6}.about-body p:last-child{margin-bottom:0}.about-body strong{color:var(--ink);font-weight:600}.work-list{max-width:var(--max);gap:26px;margin:0 auto;display:grid}.project{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid;overflow:hidden}.project-media{border-right:1px solid var(--line);background:var(--surface-2);flex-direction:column;justify-content:center;display:flex;position:relative}.project-frame{flex-direction:column;width:100%;display:flex;position:relative}.project-screen-wrap{aspect-ratio:16/10;background:#0b0d12;width:100%;position:relative;overflow:hidden}.project-screen{transform-origin:0 0;position:absolute;top:0;left:0}.project-screen-content{object-fit:cover;object-position:top center;background:#fff;border:0;width:100%;height:100%;position:absolute;inset:0}.project-poster-overlay{color:#fff;opacity:0;cursor:pointer;transition:opacity .16s var(--ease-out);background:#0b0d1257;border:0;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.project-screen-wrap:hover .project-poster-overlay,.project-poster-overlay:focus-visible{opacity:1}.project-poster-overlay .play{color:#0b0d12;background:#fff;border-radius:999px;place-items:center;width:46px;height:46px;display:grid}.project-poster-overlay .play svg{width:20px;height:20px}.project-poster-overlay>span:last-child{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.project-loading{color:#ffffffd9;pointer-events:none;background:#0b0d12c7;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.project-loading .play{width:46px;height:46px;animation:live-loading-pulse 1.3s var(--ease-in-out) infinite;border:1px solid #ffffff59;border-radius:999px;place-items:center;display:grid}@keyframes live-loading-pulse{0%,to{border-color:#ffffff59;box-shadow:0 0 #cb8e7259}50%{border-color:var(--accent);box-shadow:0 0 0 10px #cb8e7200}}.project-loading>span:last-child{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.project-livebar{border-top:1px solid var(--line);background:var(--surface);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:10.5px;display:flex}.project-livebar .url{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-livebar a{color:var(--accent-ink);flex:none;align-items:center;gap:5px;font-weight:600;display:inline-flex}.project-livebar svg{width:12px;height:12px}.project-body{flex-direction:column;gap:12px;padding:clamp(22px,3vw,30px);display:flex}.project-head{flex-wrap:wrap;align-items:baseline;gap:6px 14px;display:flex}.project-body h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:clamp(23px,2.4vw,30px);font-weight:700;line-height:1.05}.project-meta{color:var(--muted);font-size:14px}.project-blurb{color:var(--ink-2);margin:4px 0 0;font-size:16px;line-height:1.62}.project-stat{align-items:baseline;gap:12px;margin:4px 0 0;display:flex}.project-stat-value{font-family:var(--font-headline);color:color-mix(in srgb, var(--accent) 62%, var(--ink) 38%);font-size:clamp(44px,5vw,68px);font-weight:500;line-height:.9}.project-stat-label{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11.5px}.project-stack{color:var(--muted);margin:4px 0 0;font-size:14.5px;line-height:1.55}.project-stack span{color:var(--ink);margin-right:8px;font-weight:600}.project-actions{flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:6px;display:flex}.project-actions a{border:1px solid var(--line-2);transition:border-color .14s ease, color .14s ease, background .14s ease, transform .16s var(--ease-out);border-radius:999px;align-items:center;gap:7px;padding:9px 14px;font-size:13px;font-weight:600;display:inline-flex}.project-actions a.primary{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.project-actions a:hover{border-color:var(--ink);color:var(--ink)}.project-actions svg{width:14px;height:14px}.timeline{max-width:var(--max);gap:0;margin:0 auto;display:grid}.tl-item{border-top:1px solid var(--line);grid-template-columns:200px 1fr;gap:clamp(16px,3vw,40px);padding:clamp(24px,3vw,34px) 0;display:grid}.tl-item:first-child{border-top:0;padding-top:0}.tl-when{font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);font-size:12px}.tl-when strong{color:var(--accent-ink);margin-top:4px;font-weight:600;display:block}.tl-body h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 3px;font-size:clamp(20px,2.2vw,25px);font-weight:700}.tl-org{color:var(--ink);margin:0 0 4px;font-size:15.5px;font-weight:600}.tl-context{color:var(--muted);margin:0 0 14px;font-size:14px}.tl-body ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.tl-body li{color:var(--ink-2);padding-left:20px;font-size:16.5px;line-height:1.55;position:relative}.tl-body li:before{content:"";background:var(--accent);border-radius:999px;width:6px;height:6px;position:absolute;top:.62em;left:2px}.skills{background:color-mix(in srgb, var(--surface-2) 90%, transparent)}.skills-list{max-width:var(--max);gap:0;margin:0 auto;display:grid}.skills-row{border-top:1px solid var(--line-2);grid-template-columns:240px minmax(0,1fr);gap:clamp(16px,4vw,56px);padding:22px 0;display:grid}.skills-row:first-child{border-top:0;padding-top:0}.skills-row dt{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:18px;font-weight:600}.skills-row dd{max-width:70ch;color:var(--ink-2);margin:0;font-size:16.5px;line-height:1.6}.proof-grid{max-width:var(--max);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;margin:0 auto;display:grid}.proof-col h3{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);margin:0 0 18px;font-size:17px;font-weight:600}.edu{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);margin-bottom:14px;padding:20px}.edu:last-child{margin-bottom:0}.edu-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.edu h4{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:19px;font-weight:700}.edu .when{font-family:var(--font-mono);color:var(--muted);white-space:nowrap;font-size:11.5px}.edu .school{color:var(--ink-2);margin:5px 0 12px;font-size:16px;line-height:1.5}.edu .school b{color:var(--ink);font-weight:600}.edu .courses{flex-wrap:wrap;gap:6px;display:flex}.edu .courses span{border:1px solid var(--line);background:var(--surface-2);font-family:var(--font-mono);color:var(--ink-2);border-radius:999px;padding:4px 9px;font-size:10.5px}.cred{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-soft);margin-bottom:14px;padding:20px}.cred:last-child{margin-bottom:0}.cred h4{color:var(--ink);margin:0 0 10px;font-size:15.5px;font-weight:600}.cred ul{gap:9px;margin:0;padding:0;list-style:none;display:grid}.cred li{color:var(--ink-2);padding-left:18px;font-size:16px;line-height:1.55;position:relative}.cred li:before{content:"";background:var(--accent);border-radius:999px;width:6px;height:6px;position:absolute;top:.6em;left:0}.signature-band{background:var(--accent);align-items:center;height:clamp(90px,13vw,160px);display:flex;overflow:hidden}.signature-track{width:max-content;animation:34s linear infinite signature-scroll;display:flex}.signature-track-set{flex-shrink:0;display:flex}.signature-band span{white-space:nowrap;font-family:var(--font-display);letter-spacing:-.01em;color:var(--on-accent);flex-shrink:0;align-items:center;padding:0 clamp(18px,2.4vw,32px);font-size:clamp(24px,3.4vw,40px);font-weight:700;display:inline-flex}.signature-band span:after{content:"";background:var(--on-accent);opacity:.5;border-radius:999px;width:7px;height:7px;margin-left:clamp(18px,2.4vw,32px);display:inline-block}@keyframes signature-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.signature-track{animation:none}}.contact{background:color-mix(in srgb, var(--dark) 90%, transparent);color:var(--dark-ink);border-bottom:0}.contact-inner{max-width:var(--max);margin:0 auto}.contact h2{font-family:var(--font-headline);letter-spacing:-.01em;margin:0 0 14px;font-size:clamp(38px,5.6vw,64px);font-weight:400;line-height:1.02}.contact-lede{max-width:58ch;color:var(--dark-muted);text-wrap:balance;margin:0 0 36px;font-size:clamp(16px,1.5vw,18px);line-height:1.6}.contact-links{border-top:1px solid var(--dark-line);max-width:720px;display:grid}.contact-links a{border-bottom:1px solid var(--dark-line);color:var(--dark-ink);word-break:break-word;grid-template-columns:120px minmax(0,1fr);align-items:baseline;gap:16px;padding:16px 2px;font-size:17px;transition:color .14s;display:grid}.contact-links a span{color:var(--dark-muted);font-size:14px;transition:color .14s}.contact-links a:hover,.contact-links a:hover span{color:var(--accent)}.contact-foot{border-top:1px solid var(--dark-line);color:var(--dark-muted);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:40px 0 0;padding-top:22px;font-size:13px;display:flex}@media (max-width:940px){.project{grid-template-columns:1fr}.project-media{border-right:0;border-bottom:1px solid var(--line)}.about-body{columns:1}.skills-row{grid-template-columns:180px minmax(0,1fr);gap:20px}.proof-grid{grid-template-columns:1fr}}@media (max-width:720px){.nav-links{display:none}.nav-toggle{display:inline-flex}.nav-resume span{display:none}.nav-resume{padding:9px 12px}.nav-contact span{display:none}.nav-contact{padding:9px 12px}.tl-item{grid-template-columns:1fr;gap:12px}.skills-row{grid-template-columns:1fr;gap:6px;padding:18px 0}.contact-links a{grid-template-columns:1fr;gap:2px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.resume-view{height:100vh;background:var(--surface-2);flex-direction:column;height:100dvh;display:flex}.resume-bar{padding:0 var(--pad-x);border-bottom:1px solid var(--line);background:var(--surface);flex:none;justify-content:space-between;align-items:center;gap:16px;height:60px;display:flex}.resume-bar a{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-2);align-items:center;gap:7px;font-size:12px;transition:color .14s;display:inline-flex}.resume-bar a:hover{color:var(--accent-ink)}.resume-bar svg{width:15px;height:15px}.resume-title{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:12px}.resume-dl{border:1px solid var(--accent);background:var(--accent);border-radius:999px;padding:8px 14px;font-weight:600;color:var(--on-accent)!important}.resume-frame{background:var(--surface-2);border:0;flex:1;width:100%}@media (max-width:640px){.resume-title{display:none}}.chat-dock{z-index:80;align-items:center;gap:12px;display:flex;position:fixed;bottom:clamp(16px,3vw,28px);right:clamp(16px,3vw,28px)}.chat-hint{border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);white-space:nowrap;box-shadow:var(--shadow-soft);opacity:0;pointer-events:none;transition:opacity .16s var(--ease-out), transform .16s var(--ease-out);border-radius:999px;padding:9px 14px;font-size:14px;font-weight:500;transform:translate(6px)}.chat-dock:hover .chat-hint,.chat-dock:focus-within .chat-hint{opacity:1;transform:translate(0)}.chat-fab{z-index:80;border:1px solid var(--accent);background:var(--accent);width:58px;height:58px;color:var(--on-accent);box-shadow:0 12px 30px -12px color-mix(in srgb, var(--accent) 65%, transparent);transition:transform .16s var(--ease-out);border-radius:999px;flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.chat-fab.is-open{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.chat-fab svg{width:24px;height:24px}.chat-panel{z-index:80;border:1px solid var(--line);background:var(--surface);transform-origin:100% 100%;width:min(384px,100vw - 32px);height:min(560px,100dvh - 140px);transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);border-radius:16px;flex-direction:column;display:flex;position:fixed;bottom:calc(clamp(16px,3vw,28px) + 68px);right:clamp(16px,3vw,28px);overflow:hidden;box-shadow:0 30px 70px -30px #00000073}@starting-style{.chat-panel{opacity:0;transform:scale(.97)translateY(6px)}}.chat-head{border-bottom:1px solid var(--line);background:var(--surface-2);align-items:center;gap:10px;padding:14px 16px;display:flex}.chat-dot{background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent);border-radius:999px;flex:none}.chat-head strong{font-family:var(--font-display);letter-spacing:-.01em;font-size:15px;font-weight:700;display:block}.chat-head span{font-family:var(--font-mono);letter-spacing:.03em;color:var(--muted);font-size:10.5px}.chat-msgs{flex-direction:column;flex:1;gap:10px;padding:16px;display:flex;overflow-y:auto}.chat-intro p{color:var(--ink-2);margin:0 0 14px;font-size:14px;line-height:1.5}.chat-suggest{flex-wrap:wrap;gap:8px;display:flex}.chat-suggest button{border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-2);text-align:left;transition:border-color .14s ease, color .14s ease, transform .16s var(--ease-out);border-radius:999px;padding:8px 11px;font-size:12.5px}.chat-suggest button:hover{border-color:var(--accent);color:var(--ink)}.chat-msg{white-space:pre-wrap;word-wrap:break-word;border-radius:14px;max-width:88%;padding:10px 13px;font-size:14px;line-height:1.5}.chat-msg.user{background:var(--accent);color:var(--on-accent);border-bottom-right-radius:5px;align-self:flex-end}.chat-msg.assistant{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-bottom-left-radius:5px;align-self:flex-start}.chat-form{border-top:1px solid var(--line);background:var(--surface);gap:8px;padding:12px;display:flex}.chat-input{border:1px solid var(--line-2);background:var(--bg);min-width:0;color:var(--ink);font:inherit;border-radius:999px;flex:1;padding:11px 14px;font-size:14px}.chat-input:focus{border-color:var(--accent);outline:none}.chat-send{border:1px solid var(--accent);background:var(--accent);width:44px;height:44px;color:var(--on-accent);transition:opacity .14s ease, transform .16s var(--ease-out);border-radius:999px;flex:none;justify-content:center;align-items:center;display:inline-flex}.chat-send:disabled{opacity:.5;cursor:default}.chat-send svg{width:18px;height:18px}@media (hover:hover) and (pointer:fine){.nav-resume:hover{transform:translateY(-1px)}.btn-primary:hover,.btn-ghost:hover,.chat-fab:hover{transform:translateY(-2px)}}.btn:active,.nav-resume:active,.nav-toggle:active,.chat-fab:active,.chat-send:active,.chat-suggest button:active,.project-actions a:active{transform:scale(.97)}.resume-bar a.resume-dl{transition:color .14s ease, transform .16s var(--ease-out)}.resume-bar a.resume-dl:active{transform:scale(.97)}@media (max-width:560px){.chat-hint{display:none}}*{cursor:url(/cursors/future-arrow.webp) 28 24,auto!important}.ascii-trail{z-index:85;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ascii-trail span{font-family:var(--font-mono);color:var(--ink);opacity:0;will-change:transform, opacity;line-height:1;position:absolute}.ascii-trail span.go{animation:ascii-pop var(--t,.48s) var(--ease-out) forwards}.ascii-trail span.accent{color:var(--accent-ink)}@keyframes ascii-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.35)}20%{opacity:.55}38%{transform:translate(-50%,-50%)scale(1.2)}58%{transform:translate(-50%,-50%)scale(1)}78%{opacity:.3}to{opacity:0;transform:translate(-50%,-50%)scale(1)}}.hover\:font-\[900\]:hover{font-weight:900}.hover\:\[-webkit-text-stroke-color\:currentcolor\]:hover{-webkit-text-stroke-color:currentcolor}.hover\:\[-webkit-text-stroke-width\:calc\(var\(--text-stroke-width\)\*2\)\]:hover{-webkit-text-stroke-width:calc(var(--text-stroke-width) * 2)}.hover\:\[padding-inline\:var\(--hover-padding\)\]:hover{padding-inline:var(--hover-padding)}.has-\[\+span\+span\:hover\]\:font-\[400\]:has(+span+span:hover){font-weight:400}.has-\[\+span\:hover\]\:font-\[600\]:has(+span:hover){font-weight:600}.has-\[\+span\:hover\]\:\[padding-inline\:var\(--hover-padding\)\]:has(+span:hover){padding-inline:var(--hover-padding)}:hover+.\[\:hover\+\&\]\:font-\[600\]{font-weight:600}:hover+.\[\:hover\+\&\]\:\[padding-inline\:var\(--hover-padding\)\]{padding-inline:var(--hover-padding)}:hover+span+.\[\:hover\+span\+\&\]\:font-\[400\]{font-weight:400}
