:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#eee9de;--paper-deep:#ded7c9;--ink:#171713;--ink-soft:#58574f;--signal:#79409b;--signal-wash:#79409b17;--electric:#3346d3;--rule:#17171357;--mono:"DM Mono", "Courier New", monospace;--body:"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;--display:"Newsreader", "Iowan Old Style", "Baskerville", Georgia, serif;--page-gutter:clamp(18px, 3vw, 48px);font-family:var(--body);font-synthesis:none;text-rendering:optimizelegibility;line-height:1.48}*{box-sizing:border-box}html{scroll-behavior:smooth;min-height:100%}body,#root{min-height:100%}body{color:var(--ink);background-color:var(--paper);background-image:repeating-linear-gradient(90deg,#17171305 0 1px,#0000 1px 5px);margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.heading-anchor{color:inherit;text-decoration:none}.heading-anchor:after{content:"¶";color:var(--signal);font-family:var(--mono);opacity:.28;vertical-align:baseline;margin-left:.3em;font-size:.38em;font-weight:400;line-height:1;transition:opacity .12s linear;display:inline-block}.heading-anchor:hover:after,.heading-anchor:focus-visible:after{opacity:1}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}::selection{color:var(--paper);background:var(--signal)}:focus-visible{outline:3px solid var(--signal);outline-offset:3px}.app-shell{width:min(1480px,100%);min-height:100vh;padding:0 var(--page-gutter);margin:0 auto}.site-header{z-index:10;border-top:8px solid var(--ink);border-bottom:1px solid var(--ink);grid-template-columns:minmax(130px,.7fr) minmax(160px,1fr) auto;align-items:stretch;min-height:92px;display:grid;position:relative}.site-header__mark{width:max-content;font-family:var(--mono);letter-spacing:-.06em;align-items:center;font-size:1.15rem;font-weight:500;text-decoration:none;display:flex}.site-header__mark span{color:var(--signal);font-weight:400}.site-header__descriptor{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;align-self:center;margin:0;font-size:.68rem;line-height:1.4}.top-tabs{border-left:1px solid var(--ink);min-width:min(42vw,480px);display:flex}.top-tabs__button{border:0;border-right:1px solid var(--ink);color:var(--ink);text-align:left;cursor:pointer;background:0 0;flex:1;grid-template-columns:auto 1fr;align-items:center;gap:16px;padding:12px 20px;transition:color .12s linear,background-color .12s linear;display:grid;position:relative}.top-tabs__button:last-child{border-right:0}.top-tabs__button span{font-family:var(--mono);font-size:.65rem}.top-tabs__button strong{font-family:var(--display);font-size:1.08rem;font-weight:400}.top-tabs__button:after{content:"";background:var(--signal);height:0;transition:height .12s linear;position:absolute;bottom:-1px;left:0;right:0}.top-tabs__button:hover:after,.top-tabs__button.is-active:after{height:7px}.top-tabs__button.is-active{color:var(--paper);background:var(--ink)}.tab-panels{position:relative}.panel[aria-hidden=true]{display:none}.resume{counter-reset:resume-section}.hero{border-bottom:1px solid var(--ink);padding:clamp(48px,6vw,82px) 0 clamp(48px,6vw,88px)}.hero__header{grid-template-columns:minmax(340px,.82fr) minmax(440px,1.18fr);align-items:center;gap:clamp(40px,7vw,120px);display:grid}.hero__eyebrow,.resume-intro__eyebrow,.lab__eyebrow{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 14px;font-size:.68rem;font-weight:500}.hero__eyebrow{font-size:2rem}.resume-intro__eyebrow:before{content:"●";color:var(--signal);margin-right:10px}.hero h1{max-width:7ch;font-family:var(--display);letter-spacing:-.075em;margin:0;font-size:clamp(4.8rem,8.6vw,8.8rem);font-weight:300;line-height:.78}.hero__copy-block{columns:2;column-rule:1px solid var(--rule);column-gap:clamp(24px,3vw,48px)}.hero__copy{break-inside:avoid;color:var(--ink-soft);margin:0 0 1.1em;font-size:clamp(1rem,1.25vw,1.22rem);line-height:1.38}.hero__copy:first-child{color:var(--ink);font-size:clamp(1.35rem,1.8vw,1.85rem);line-height:1.12}.resume-card{padding:clamp(42px,6vw,80px) 0 0}.resume-intro{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);color:var(--ink);background:var(--signal-wash);grid-template-columns:minmax(240px,.75fr) minmax(340px,1.25fr);margin-bottom:clamp(48px,7vw,94px);display:grid}.resume-intro>div:first-child{border-right:1px solid var(--rule);padding:clamp(24px,3vw,40px)}.resume-intro h2{max-width:none;font-family:var(--display);letter-spacing:-.045em;margin:0;font-size:clamp(2.1rem,3.5vw,3.8rem);font-weight:300;line-height:.95}.resume-meta{font-family:var(--mono);letter-spacing:.04em;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:8px;padding:clamp(24px,3vw,40px);font-size:1rem;display:flex}.resume-meta a:hover{color:var(--signal)}.resume-section{counter-increment:resume-section;border-top:1px solid var(--ink);grid-template-columns:minmax(180px,.58fr) minmax(0,1.42fr);gap:clamp(32px,6vw,96px);padding:clamp(32px,5vw,72px) 0;scroll-margin-top:24px;display:grid}.resume-section__header{align-self:start;position:sticky;top:24px}.resume-section__number:before{content:"0" counter(resume-section);color:var(--signal);font-family:var(--mono);letter-spacing:.12em;margin-bottom:10px;font-size:.68rem;display:block}.resume-section__title{font-family:var(--display);letter-spacing:-.045em;margin:0;font-size:clamp(2rem,3.5vw,4rem);font-weight:300;line-height:.95}.resume-section__body>p{max-width:74ch;margin:0;font-size:clamp(1.08rem,1.55vw,1.45rem);line-height:1.42}.resume-section__body>p+p{margin-top:14px}.resume-role{border-top:1px solid var(--rule);grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr);column-gap:clamp(24px,4vw,64px);padding:28px 0 34px;display:grid;position:relative}.resume-role:first-child{border-top:0;padding-top:0}.resume-role h3{font-family:var(--body);letter-spacing:-.02em;grid-column:1;margin:0;font-size:clamp(1rem,1.3vw,1.22rem);font-weight:400;line-height:1.22}.resume-role__when{color:var(--ink-soft);font-family:var(--mono);grid-column:1;margin:12px 0 0;font-size:.66rem;line-height:1.5}.resume-role>p:not(.resume-role__when),.resume-role>ul{grid-column:2}.resume-role>p:not(.resume-role__when){margin:0}.resume-role ul{grid-row:1/span 2;margin:0;padding:0;list-style:none}.resume-role li{padding-left:22px;position:relative}.resume-role li:before{content:"—";color:var(--signal);position:absolute;left:0}.resume-role li+li{margin-top:7px}.resume-role__meta{color:var(--ink-soft);font-size:.9rem;margin-top:14px!important}.resume-role__meta strong{color:var(--ink);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-size:.66rem;font-weight:500}.resume-role a{-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal)}.resume-role a:hover{color:var(--signal)}.lab{border-bottom:1px solid var(--ink);grid-template-columns:minmax(0,2fr) minmax(300px,.72fr);min-height:calc(100vh - 92px);display:grid}.lab__panel{border-right:1px solid var(--ink);padding:clamp(24px,3.5vw,52px) clamp(24px,3.5vw,52px) clamp(24px,3.5vw,52px) 0}.lab__header{grid-template-columns:1fr minmax(200px,.7fr);align-items:start;gap:24px;min-height:74px;display:grid}.lab__eyebrow{margin:0}.lab__eyebrow:before{content:"[ ";color:var(--signal)}.lab__eyebrow:after{content:" ]";color:var(--signal)}.lab__status{color:var(--ink-soft);margin:0;font-size:.9rem;line-height:1.35}.lab__viewport{border:1px solid var(--ink);background:#07060a;min-height:560px;position:relative;overflow:hidden}.lab__viewport:before,.lab__viewport:after{z-index:1;pointer-events:none;color:#eee9deb3;font-family:var(--mono);letter-spacing:.08em;font-size:.6rem;position:absolute}.lab__viewport:before{content:"LIVE / WEBGL";top:14px;left:16px}.lab__viewport:after{content:"+";font-size:1.2rem;bottom:12px;right:16px}.lab__canvas{width:100%;height:560px;display:block}.lab__controls{align-self:stretch;padding:clamp(24px,3.5vw,52px) 0 clamp(24px,3.5vw,52px) clamp(24px,3.5vw,52px)}.control-card{position:sticky;top:24px}.control-card label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;grid-template-columns:1fr auto;gap:8px 16px;margin-top:20px;font-size:.64rem;font-weight:400;line-height:1.25;display:grid}.control-card label span{color:var(--signal);font-weight:500}.control-card input[type=range]{width:100%;height:18px;accent-color:var(--signal);cursor:ew-resize;grid-column:1/-1;margin:0}.control-card input[type=color]{border:1px solid var(--ink);cursor:pointer;background:0 0;border-radius:0;grid-column:1/-1;width:100%;height:34px;padding:0}.control-card button{border:1px solid var(--ink);background:var(--signal);width:100%;color:var(--ink);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;box-shadow:6px 6px 0 var(--ink);border-radius:0;margin-top:32px;padding:15px 18px;font-size:.68rem;font-weight:500;transition:transform .1s linear,box-shadow .1s linear}.control-card button:hover{box-shadow:3px 3px 0 var(--ink);transform:translate(3px,3px)}.control-card button:active{box-shadow:none;transform:translate(6px,6px)}.site-footer{border-top:8px solid var(--ink);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;grid-template-columns:repeat(2,1fr);gap:20px;padding:22px 0 24px;font-size:.62rem;display:grid}.site-footer span:last-child{text-align:right}@media (width<=1040px){.hero__header{grid-template-columns:1fr;align-items:start}.hero h1{max-width:none;font-size:clamp(5rem,14vw,9rem)}.resume-role{grid-template-columns:minmax(190px,.65fr) minmax(0,1.35fr)}.lab{grid-template-columns:minmax(0,1fr) minmax(270px,.55fr)}}@media (width<=780px){.site-header{grid-template-columns:1fr auto;min-height:80px}.site-header__descriptor{display:none}.top-tabs{min-width:0}.top-tabs__button{gap:8px;padding:10px 13px}.top-tabs__button span{display:none}.hero__copy-block{columns:1}.resume-intro{grid-template-columns:1fr}.resume-intro>div:first-child{border-right:0;border-bottom:1px solid var(--rule)}.resume-section{grid-template-columns:1fr;gap:28px}.resume-section__header{position:static}.resume-role{grid-template-columns:1fr}.resume-role h3,.resume-role__when,.resume-role>p:not(.resume-role__when),.resume-role>ul{grid-column:1}.resume-role__when{margin-bottom:16px}.resume-role ul{grid-row:auto}.lab{grid-template-columns:1fr}.lab__panel{border-right:0;padding-right:0}.lab__controls{border-top:1px solid var(--ink);padding-left:0}.control-card{grid-template-columns:1fr 1fr;gap:0 28px;display:grid;position:static}.control-card h3,.control-card button{grid-column:1/-1}}@media (width<=520px){:root{--page-gutter:14px}.site-header{border-top-width:6px}.site-header__mark{font-size:.95rem}.top-tabs__button{padding-inline:10px}.top-tabs__button strong{font-size:.9rem}.hero{padding-top:18px}.hero h1{font-size:clamp(4.2rem,23vw,7rem);line-height:.76}.lab__header{grid-template-columns:1fr;margin-bottom:24px}.lab__viewport,.lab__canvas{height:390px;min-height:390px}.control-card{grid-template-columns:1fr}.control-card h3,.control-card button{grid-column:1}.site-footer{border-top-width:6px;grid-template-columns:1fr 1fr}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.top-tabs__button,.top-tabs__button:after,.control-card button{transition:none}}@media print{:root{--paper:#fff}body{background:#fff}.site-header,.site-footer,.hero{display:none}.app-shell{padding:0}.resume-card{padding-top:0}.resume-intro{min-height:0;margin-bottom:24px}.resume-section{break-inside:avoid;padding:20px 0}.resume-section__header{position:static}}
