@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(../media/47faf0e9117ce2e3-s.270md_-rr62el.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(../media/660acf689794c992-s.p.0lsanbtneewqp.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:DM Sans Fallback;src:local(Arial);ascent-override:94.9%;descent-override:29.66%;line-gap-override:0.0%;size-adjust:104.53%}.ngYT9G_className{font-family:DM Sans,DM Sans Fallback;font-style:normal}.ngYT9G_variable{--font-body:"DM Sans", "DM Sans Fallback"}
@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/edb5f85793adc1bb-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/92b6de9cb55945e2-s.44ks8kcggj012.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/237858b39a32779d-s.p.1ii7211jqpzi_.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.Oj6AZG_className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.Oj6AZG_variable{--font-display:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/faab88e4be272d29-s.3zhtymus0wdqb.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a45aa1001bf9176f-s.3nkuoiize4urq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/41ba59f553543ecf-s.1da667lu-u79a.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/67bba87670b402d1-s.1i05ju5aeyhye.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d6c1ff7e86974212-s.p.1dgcou5jor5q_.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/49b1d53681a91a99-s.31-2bzhq1gx_9.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/123d516c9baeb953-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a74d2542cc4c775f-s.2taws-qdxmzlf.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7ac0b1cd3e695dd0-s.0htwiiqufp3l9.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/916cd8a3bde3edf8-s.p.28xcb7557rbh2.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.Y2qwsG_className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.Y2qwsG_variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--paper:#f2f1eb;--ink:#171815;--line:#d5d5cb;--muted:#66685f;--blue:#2449f4;--lime:#d8ed76;--black:#050605}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{background:var(--paper);color:var(--ink);font-family:var(--font-body),sans-serif;margin:0;overflow-x:hidden}h1,h2,h3,p{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;color:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.contact :focus-visible{outline-color:var(--lime)}::selection{background:var(--blue);color:#fff}.wrap{width:min(1280px,100% - 96px);margin-inline:auto}.row{border-bottom:1px solid var(--line)}.mono{font-family:var(--font-mono),monospace;letter-spacing:.02em;font-size:11px}.section-label{color:var(--muted);justify-content:space-between;gap:20px;display:flex}.skip{z-index:50;background:#fff;padding:15px;position:absolute;top:-100px;left:0}.skip:focus{top:0}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes blink{50%{opacity:0}}.topline{background:var(--ink);color:var(--paper);font:10px var(--font-mono),monospace;letter-spacing:.035em;justify-content:space-between;padding:10px 48px;display:flex}.topline i{background:#c2f668;width:6px;height:6px;margin-left:10px;animation:1.4s step-end infinite blink;display:inline-block}.nav{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:90px;display:flex}.nameplate{flex-direction:column;flex-shrink:0;align-items:flex-start;gap:4px;display:flex}.nameplate-name{font:600 21px/1.15 var(--font-display),sans-serif;letter-spacing:-.8px;transition:color .2s}.nameplate-dot{color:var(--blue)}.nameplate-role{font:400 11px/1.3 var(--font-body),sans-serif;color:var(--muted);letter-spacing:.1px}.nameplate:hover .nameplate-name{color:var(--blue)}.nav nav{gap:38px;font-size:13px;display:flex}.nav nav a{transition:color .2s}.nav nav a:hover{color:var(--blue)}.nav sup{color:var(--muted);margin-left:3px;font-size:9px}.nav-actions{align-items:center;gap:24px;display:flex}.nav-socials{align-items:center;gap:6px;display:flex}.nav-socials a{border-radius:9px;place-items:center;width:38px;height:38px;transition:background .2s,color .2s,transform .2s;display:grid}.nav-socials a:hover{color:var(--blue);background:#e4e6f0;transform:translateY(-2px)}.social-icon{background:currentColor;width:18px;height:18px;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.nav-contact{border:1px solid var(--ink);padding:12px 18px;font-size:12px;transition:background .2s,color .2s}.nav-contact span{margin-left:25px}.nav-contact:hover{background:var(--ink);color:#fff}.eyebrow{font:11px var(--font-mono),monospace;letter-spacing:.035em;justify-content:space-between;margin-top:44px;display:flex}.hero h1{font:700 clamp(90px,13.5vw,190px)/1.1 var(--font-display),sans-serif;letter-spacing:-.085em;white-space:nowrap;margin:16px 0 25px}.surname{position:relative}.asterisk{color:var(--blue);vertical-align:top;margin:17px 0 0 17px;font-size:.58em;line-height:1.1;animation:30s linear infinite rotate;display:inline-block}.hero-bottom{border-top:1px solid var(--line);grid-template-columns:1fr 1.55fr 1fr;gap:30px;padding:35px 0 45px;display:grid}.coordinates{color:var(--muted);padding-top:6px;line-height:1.8}.intro h2{font:500 clamp(25px,2.6vw,36px)/1.15 var(--font-display),sans-serif;letter-spacing:-1.4px}.intro em{font-family:Georgia,serif;font-weight:400}.intro p{color:var(--muted);max-width:400px;margin:18px 0 24px;font-size:14px;line-height:1.7}.hero .button{gap:32px;padding:15px 19px;font-weight:500;transition:transform .2s}.hero .button:hover{transform:translateY(-2px)}.dark{background:var(--ink);color:#fff}.hero-portrait{background:#fffefa;border:1px solid #d8d7cc;place-self:center;width:210px;max-width:100%;margin:0;padding:8px 8px 0;transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s;transform:rotate(4deg);box-shadow:5px 7px #deded3}.hero-portrait:hover{transform:rotate(0)translateY(-3px);box-shadow:7px 10px #deded3}.portrait-image{aspect-ratio:1744/2048;background:#deded3;overflow:hidden}.portrait-image img{object-fit:cover;width:100%;height:100%;display:block}.hero-portrait figcaption{font:9px var(--font-mono),monospace;letter-spacing:-.3px;justify-content:space-between;align-items:center;gap:8px;padding:12px 3px;display:flex}.hero-portrait figcaption>span+span{color:var(--blue);font-size:20px;line-height:1}.hero-foot{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;padding:16px 0;font-size:9px;display:flex}.ticker{background:var(--lime);border-block:1px solid var(--ink);padding:15px 0;overflow:hidden}.ticker>div{width:max-content;animation:50s linear infinite marquee;display:flex}.ticker span{white-space:nowrap;word-spacing:4px;font:500 16px var(--font-display),sans-serif;letter-spacing:1px}.ticker b{margin:0 32px;font-size:22px}@keyframes marquee{to{transform:translate(-50%)}}.problems{border-bottom:1px solid var(--line);padding:76px 0}.problem-layout{grid-template-columns:.85fr 1.15fr;align-items:center;gap:80px;display:grid}.problem-head{position:static}.problem-head h2{font:500 clamp(32px,3.8vw,52px)/1.08 var(--font-display),sans-serif;letter-spacing:-.045em;max-width:13ch;margin-top:24px}.problem-head em{color:var(--blue);font-family:Georgia,serif;font-weight:400}.problem-head p{max-width:320px;color:var(--muted);margin-top:22px;font-size:14px;line-height:1.75}.problem-paths{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.problem-paths li{border-bottom:1px solid var(--line)}.problem-path{grid-template-columns:28px 1fr 36px;align-items:center;gap:18px;padding:22px 12px 22px 0;transition:background .25s,padding .25s;display:grid}.path-index{color:var(--muted);font:10px var(--font-mono),monospace;align-self:start;margin-top:5px}.path-copy{gap:10px;min-width:0;display:grid}.path-question{font:500 clamp(19px,1.7vw,25px)/1.2 var(--font-display),sans-serif;letter-spacing:-.6px;background:linear-gradient(var(--blue),var(--blue)) 0 56%/0 2px no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone;width:fit-content;transition:background-size .5s cubic-bezier(.22,1,.36,1),color .3s}.problem-path:hover .path-question,.problem-path:focus-visible .path-question{color:var(--muted);background-size:100% 2px}.path-answer{flex-wrap:wrap;align-items:center;gap:8px;font-size:11px;line-height:1.5;display:flex}.path-answer>span{color:var(--muted)}.path-answer strong{color:var(--blue);font-weight:500}.path-arrow{border:1px solid var(--line);place-items:center;width:34px;height:34px;font-size:19px;transition:background .25s,color .25s,transform .25s;display:grid}.problem-path:hover,.problem-path:focus-visible{background:#e8e9e1;padding-left:10px}.problem-path:hover .path-arrow,.problem-path:focus-visible .path-arrow{background:var(--blue);border-color:var(--blue);color:#fff;transform:translate(2px,-2px)}@media (max-width:900px){.problem-layout{gap:40px}.problem-path{gap:12px}.path-question{font-size:21px}}.work{border-bottom:1px solid var(--line);padding:76px 0 90px}.work-head{justify-content:space-between;align-items:flex-end;gap:30px;margin:30px 0 35px;display:flex}.work-head h2{font:500 clamp(36px,4.4vw,60px)/1.02 var(--font-display),sans-serif;letter-spacing:-.045em}.work-head p{max-width:300px;color:var(--muted);font-size:14px;line-height:1.7}.filter-bar{border-block:1px solid var(--line);justify-content:space-between;align-items:center;margin-bottom:28px;padding:15px 0;display:flex}.filter-bar button{color:var(--muted);background:0 0;border:0;padding:10px 16px;font-size:12px;transition:color .2s,background .2s}.filter-bar button:hover{color:var(--ink)}.filter-bar button.active{background:var(--ink);color:#fff}.filter-bar sup{margin-left:8px;font-size:8px}.filter-bar>span{color:var(--muted);font-size:9px}.projects{grid-template-columns:1fr 1fr;align-items:start;gap:42px 24px;display:grid}.project{scroll-margin-top:24px}.project:first-child{grid-column:1/-1}.preview{background:#dedff5;justify-content:center;align-items:center;height:330px;padding:35px;transition:background .4s;display:flex;position:relative;overflow:hidden}.project:first-child .preview{background:#dcdde5;height:470px;padding:40px 100px 0}.preview img{object-fit:contain;object-position:center;filter:drop-shadow(0 10px 20px #0002);width:100%;height:100%;transition:transform .5s cubic-bezier(.22,1,.36,1)}.preview:hover img{transform:scale(1.025)translateY(-4px)}.project:first-child .preview img{object-fit:cover;object-position:top;border-radius:6px 6px 0 0}.preview .project-number{z-index:1;font:10px var(--font-mono),monospace;position:absolute;top:16px;left:16px}.preview .visit{background:var(--paper);border-radius:50%;place-items:center;width:40px;height:40px;font-size:22px;transition:background .25s,color .25s,transform .35s cubic-bezier(.22,1,.36,1);display:grid;position:absolute;bottom:18px;right:18px}.preview:hover .visit{background:var(--blue);color:#fff;transform:rotate(45deg)}.project:nth-child(2) .preview{background:#e3e8d6}.project:nth-child(3) .preview{background:#d8e3f0}.project:nth-child(4) .preview{background:#e9dfcd}.project:nth-child(5) .preview{background:#dad6e8}.project-meta{justify-content:space-between;gap:20px;margin-top:19px;display:flex}.project h3{font:500 27px var(--font-display),sans-serif;letter-spacing:-1px}.project-tags{font:9px var(--font-mono),monospace;text-transform:uppercase;color:var(--muted);padding-top:9px}.project:hover .project-facts{gap:10px;max-width:640px;margin:14px 0 18px;display:grid}.project-facts>div{grid-template-columns:84px 1fr;align-items:baseline;gap:16px;display:grid}.project-facts dt{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:10px}.project-facts dd{margin:0;font-size:14px;line-height:1.6}.project-facts>div:first-child dd{color:var(--ink)}.project-facts>div:last-child dd{color:var(--muted)}.project-facts>div:first-child dt{color:#c97a12}.project-links{gap:24px;font-size:11px;display:flex}.project-links a{border-bottom:1px solid var(--ink);padding-bottom:4px;transition:color .2s,border-color .2s}.project-links a:hover{color:var(--blue);border-color:var(--blue)}.project details{border-top:1px solid var(--line);margin-top:20px;padding-top:12px}.project summary{cursor:pointer;font:500 16px var(--font-display),sans-serif;letter-spacing:-.02em;color:var(--ink);align-items:center;gap:12px;padding:2px 0;list-style:none;transition:color .2s;display:flex}.project summary::-webkit-details-marker{display:none}.project summary:hover{color:var(--blue)}.project summary:after{content:"";background:linear-gradient(#fff,#fff) center/10px 1.6px no-repeat,linear-gradient(#fff,#fff) center/1.6px 10px no-repeat,var(--blue);border-radius:50%;flex-shrink:0;width:26px;height:26px;margin-left:auto;transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .25s;box-shadow:0 0 #2449f400}.project summary:hover:after{box-shadow:0 0 0 5px #2449f422}.project details[open] summary:after{transform:rotate(135deg)}.project details[open] summary{color:var(--ink)}.hood-icon{min-width:30px;height:24px;color:var(--blue);font:600 11px var(--font-mono),monospace;letter-spacing:0;background:#2449f416;border-radius:6px;place-items:center;padding:0 7px;transition:background .2s,color .2s;display:inline-grid}.project summary:hover .hood-icon,.project details[open] .hood-icon{background:var(--blue);color:#fff}.hood-hint{color:var(--muted);font:11px var(--font-mono),monospace;letter-spacing:0}.hood-hint:before{content:"· ";opacity:.6}.hood{color:var(--paper);background:#161814;border-radius:6px;margin-top:14px;animation:.4s cubic-bezier(.22,1,.36,1) hood-in;overflow:hidden;box-shadow:0 18px 32px -22px #000a}.hood-bar{color:#8b8f86;background:#20221e;border-bottom:1px solid #ffffff10;align-items:stretch;gap:14px;height:34px;padding-left:14px;font-size:10px;display:flex}.hood-dots{align-items:center;gap:6px;display:flex}.hood-dots i{background:#e5675d;border-radius:50%;width:8px;height:8px}.hood-dots i:nth-child(2){background:#e9b949}.hood-dots i:nth-child(3){background:#62c26a}.hood-tab{color:var(--paper);box-shadow:inset 0 2px 0 var(--lime);background:#161814;border-inline:1px solid #ffffff10;align-items:center;padding:0 14px;display:flex}.hood-tags{align-items:center;margin-left:auto;padding-right:14px;display:flex}.hood-code{counter-reset:line;margin:0;padding:14px 18px 18px 0;list-style:none}.hood-code li{color:#c9ccc2;animation:.45s cubic-bezier(.22,1,.36,1) both line-in;animation-delay:calc(var(--i)*80ms + .12s);grid-template-columns:46px 1fr;font-size:13px;line-height:23px;display:grid}.hood-code li:before{counter-increment:line;content:counter(line);text-align:right;color:#4d5049;font:11px/23px var(--font-mono),monospace;padding-right:16px}.hood-code li:last-child>span:after{content:"";vertical-align:-2px;background:var(--lime);width:7px;height:14px;margin-left:5px;animation:1s step-end infinite blink;display:inline-block}.hood-stack{font:12px/23px var(--font-mono),monospace!important}.hood-stack .k{color:var(--lime)}.hood-stack .s{color:#9fb4ff}.hood-stack .pn{color:#6f7369}@media (max-width:600px){.hood-tags,.hood-hint{display:none}.hood-code li{grid-template-columns:34px 1fr}}@keyframes hood-in{0%{opacity:0;transform:translateY(-6px)}}@keyframes line-in{0%{opacity:0;transform:translate(-8px)}}.demo{border:1px solid var(--ink);box-shadow:7px 7px 0 var(--line);background:#faf9f4;margin:20px 7px 7px 0}.demo-top{border-bottom:1px solid var(--line);justify-content:space-between;padding:15px;font-size:9px;display:flex}.demo-top>span+span{letter-spacing:3px;font-size:8px}.demo-body{grid-template-columns:1fr 1fr;gap:20px;padding:25px;display:grid}.demo-body .mono{color:var(--muted);font-size:9px}.demo ol{margin:17px 0;padding-left:18px;font-size:12px;line-height:2.5}.demo li.done{color:#6f745f;text-decoration:line-through}.demo-fields{gap:10px;display:grid}.demo-fields>div{background:#ecece5;border:1px solid #deded4;align-items:center;min-height:35px;padding:8px;font-size:10px;display:flex}.demo-fields>div:empty:before{content:attr(data-placeholder);color:#898b82}.demo-bottom{justify-content:space-between;align-items:center;padding:0 25px;display:flex}.blue{background:var(--blue);color:#fff}.button:disabled{opacity:.6;cursor:default}.reset{background:0 0;border:0;font-size:11px}.project-demo .demo-note{margin:18px 20px;padding:0;font-size:8px;line-height:1.5}.button{border:0;justify-content:space-between;align-items:center;gap:28px;padding:13px 16px;font-size:12px;font-weight:600;display:inline-flex}.about{color:var(--paper);background:#1b1d19;padding:75px 0}.about-grid{grid-template-columns:1.1fr 1fr;gap:100px;display:grid}.about .section-label{color:var(--paper)}.about h2{font:500 clamp(34px,4vw,58px)/1.1 var(--font-display),sans-serif;letter-spacing:-2.5px;margin-top:40px}.about h2 em{color:var(--lime);font-family:Georgia,serif;font-weight:400}.signature{margin-top:55px;font:italic 27px Georgia,serif}.signature span{color:var(--lime);margin-left:12px;font-family:Arial,sans-serif}.about-copy{padding-top:50px}.about-copy .large{color:var(--paper);letter-spacing:-.5px;margin-bottom:25px;font-size:24px;line-height:1.3}.about-copy p{color:#b4b7ac;margin:0 0 16px;font-size:14px;line-height:1.8}.text-link{border-bottom:1px solid;padding-bottom:7px;font-size:12px;display:inline-block}.about .text-link{color:var(--lime)}.about .text-link:hover{opacity:.75}.stack-dock{justify-content:space-between;align-items:center;gap:36px;padding:44px 0;display:flex}.dock-heading{flex-shrink:0}.dock-heading>.mono{color:var(--muted);text-transform:uppercase}.dock-heading h2{font:500 26px/1.2 var(--font-display),sans-serif;letter-spacing:-.04em;margin-top:9px}.dock-heading h2 span{color:var(--blue)}.dock-logos{justify-content:center;gap:12px;margin:0;padding:14px 0;list-style:none;display:flex}.dock-item{animation:.6s both dock-enter;animation-delay:var(--delay);cursor:default;position:relative}.dock-tile{transform-origin:50% 100%;border-radius:13px;place-items:center;width:46px;height:46px;transition:transform .35s cubic-bezier(.22,1.5,.45,1),box-shadow .35s;display:grid;box-shadow:0 2px 3px #0000000a,inset 0 0 0 1px #ffffff12}.dock-icon{width:28px;height:28px;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.dock-item:hover .dock-tile{transform:translateY(-9px)scale(1.18);box-shadow:0 12px 20px #00000024}.dock-item:hover+.dock-item .dock-tile{transform:translateY(-3px)scale(1.05)}.dock-item:has(+.dock-item:hover) .dock-tile{transform:translateY(-3px)scale(1.05)}.dock-name{white-space:nowrap;pointer-events:none;background:var(--ink);color:#fff;font:10px var(--font-mono),monospace;opacity:0;z-index:2;border-radius:5px;padding:6px 9px;transition:opacity .2s,transform .2s;position:absolute;bottom:calc(100% + 19px);left:50%;transform:translate(-50%,5px)}.dock-item:hover .dock-name{opacity:1;transform:translate(-50%)}@media (hover:none){.dock-logos{gap:14px 10px}.dock-item{flex-direction:column;align-items:center;gap:7px;width:58px;display:flex}.dock-name{opacity:1;color:var(--muted);white-space:normal;text-align:center;background:0 0;padding:0;font-size:9px;line-height:1.25;position:static;transform:none}}@keyframes dock-enter{0%{opacity:0;transform:translateY(12px)scale(.9)}to{opacity:1;transform:none}}.contact{background:var(--blue);color:#fff;padding:50px 0 40px}.contact .section-label{color:#d4dcff}.contact-title{font:700 clamp(54px,10vw,140px)/.86 var(--font-display),sans-serif;letter-spacing:-.065em;margin:34px 0 44px}.contact-grid{border-top:1px solid #ffffff40;grid-template-columns:1.15fr .85fr;align-items:start;gap:72px;padding-top:34px;display:grid}.contact-intro{color:#dfe5ff;max-width:420px;margin:0 0 24px;font-size:16px;line-height:1.55}.contact-form{gap:12px;display:grid}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.contact-form input,.contact-form textarea{color:#fff;width:100%;font:15px var(--font-body),sans-serif;resize:vertical;background:#ffffff14;border:1px solid #fff3;border-radius:8px;padding:15px 16px;transition:border-color .2s,background .2s}.contact-form input::placeholder,.contact-form textarea::placeholder{color:#c8d1ff}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--lime);background:#ffffff1f;outline:none}.send{background:var(--paper);color:var(--ink);border:0;border-radius:8px;justify-content:space-between;align-items:center;margin-top:4px;padding:15px 18px;font-size:14px;font-weight:600;transition:transform .2s,background .2s;display:flex}.send:hover{background:#fff;transform:translateY(-2px)}.send span{transition:transform .25s}.send:hover span{transform:translate(3px,-3px)}.form-note{color:#c8d1ff;font-size:11px}.form-note a{color:#fff;border-bottom:1px solid #fff6}.local-card{flex-direction:column;display:flex}.local-label{color:#c8d1ff;text-transform:uppercase}.local-time{font:600 clamp(40px,4.4vw,60px)/1 var(--font-display),sans-serif;letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin-top:12px}.local-line{color:#dfe5ff;margin-top:12px;font-size:15px}.local-links{border-top:1px solid #ffffff3a;margin:36px 0 0;padding:0;list-style:none}.local-links a{border-bottom:1px solid #ffffff3a;justify-content:space-between;align-items:center;padding:14px 0;font-size:15px;font-weight:600;transition:padding .25s,color .2s;display:flex}.local-links a:hover{color:var(--lime);padding-left:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}footer{color:var(--muted);justify-content:space-between;gap:16px;padding:22px 0;display:flex}footer a:hover{color:var(--blue)}@media (min-width:1500px){.hero h1{font-size:190px}}@media (max-width:1100px){.dock-logos{gap:8px}.dock-tile{border-radius:11px;width:39px;height:39px}.dock-icon{width:25px;height:25px}}@media (max-width:900px){.wrap{width:calc(100% - 48px)}.topline{padding-inline:24px}.nav-actions{gap:15px}.nav-socials{gap:12px}.nav nav{gap:20px}.hero-bottom{grid-template-columns:.55fr 1.4fr .8fr;gap:15px}.coordinates{font-size:9px}.hero-portrait{width:165px;padding:6px 6px 0}.hero-portrait figcaption{padding:10px 1px;font-size:7px}.project:first-child .preview{height:360px;padding:35px 45px 0}.preview{height:240px;padding:25px}.project-meta{display:block}.demo-body{gap:10px;padding:15px}.demo-bottom{padding-inline:15px}.about-grid{gap:40px}.about h2{letter-spacing:-1.8px}.stack-dock{flex-direction:column;align-items:flex-start;gap:16px}.dock-logos{flex-wrap:wrap;justify-content:flex-start}}@media (max-width:760px){.problem-layout{grid-template-columns:1fr;gap:28px}.problem-head{position:static}.problem-row{grid-template-columns:1fr;row-gap:6px}.problem-fix{text-align:left;grid-column:1;justify-self:start}}@media (max-width:600px){.wrap{width:calc(100% - 36px)}.topline{padding:9px 18px;font-size:7px}.topline span+span{display:none}.nav{flex-wrap:wrap;gap:12px;height:auto;min-height:84px;padding:14px 0}.nav nav{order:3;justify-content:center;gap:26px;width:100%;padding-top:6px;font-size:11px}.nav-actions{gap:12px;margin-left:auto}.nav-actions .nav-contact{display:none}.nav-socials{gap:4px}.nav-socials a{width:36px;height:36px}.nameplate-name{letter-spacing:-.5px;font-size:17px}.nameplate-role{font-size:9px}.eyebrow{margin-top:30px;font-size:8px}.eyebrow .mono{font-size:8px}.hero h1{letter-spacing:-.08em;margin:20px 0;font-size:14vw}.asterisk{margin:5px 0 0 5px}.hero-bottom{grid-template-columns:1fr .6fr;gap:12px;padding:25px 0 32px}.coordinates{display:none}.intro h2{letter-spacing:-1px;font-size:25px}.intro p{font-size:12px}.hero-foot{font-size:6px}.hero-portrait{width:130px;transform:rotate(3deg);box-shadow:3px 5px #deded3}.hero-portrait figcaption{gap:3px;padding:9px 0;font-size:6px}.hero-portrait figcaption>span+span{font-size:15px}.ticker{padding:10px 0}.ticker span{font-size:12px}.ticker b{margin:0 15px}}@media (max-width:640px){.problems,.work{padding:50px 0 56px}.problem-row{padding:14px 0}.section-label span+span{text-align:right}.work-head{display:block}.work-head p{margin-top:14px}.filter-bar>span{display:none}.filter-bar button{padding:9px 12px;font-size:10px}.projects{grid-template-columns:1fr;gap:32px}.project:first-child{grid-column:auto}.project:first-child .preview{height:230px;padding:28px 25px 0}.preview{height:240px}.project-meta{display:flex}.project h3{font-size:25px}.project-tags{font-size:8px}.project-facts>div{grid-template-columns:70px 1fr;gap:12px}.project-facts dd{font-size:13px}.demo-body{grid-template-columns:1fr}.about{padding:45px 0}.about-grid{grid-template-columns:1fr;gap:32px}.about h2{margin-top:28px;font-size:43px}.signature{margin-top:28px}.about-copy{padding-top:0}.about-copy .large{font-size:22px}.about-copy p{font-size:13px}.contact-grid{grid-template-columns:1fr;gap:28px}.field-row{grid-template-columns:1fr}footer{font-size:10px}footer>span:nth-child(2){display:none}}@media (max-width:360px){.nav nav{gap:16px}.nameplate-name{font-size:16px}.nameplate-role{font-size:8px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.dock-item:hover .dock-tile,.dock-item:hover+.dock-item .dock-tile{transform:none}.dock-item:has(+.dock-item:hover) .dock-tile{transform:none}}.hero-actions{flex-wrap:wrap;align-items:center;gap:18px 22px;display:flex}.resume-link{border-bottom:1px solid var(--ink);align-items:center;gap:9px;padding:10px 0;font-size:12px;display:inline-flex}.resume-link:hover{color:var(--blue);border-color:var(--blue)}.resume-format{font:8px var(--font-mono),monospace;color:var(--muted)}.background-summary{border-top:1px solid #45473e;margin:28px 0}.background-entry{border-bottom:1px solid #45473e;padding:19px 0}.background-entry>.mono{color:#b4b7ac;font-size:9px;line-height:1.6}.background-entry h3{font:500 18px/1.35 var(--font-display),sans-serif;letter-spacing:-.3px;margin:7px 0 5px}.about-copy .background-entry p{margin:0;font-size:12px;line-height:1.7}.about-copy .background-entry .background-detail{max-width:410px;margin-top:8px;font-size:12px}.about-actions{flex-wrap:wrap;gap:18px 25px;display:flex}.nameplate-role{font-size:10px}@media (max-width:600px){.nameplate-role{letter-spacing:0;font-size:8px}.hero-actions{gap:12px}.resume-link{font-size:11px}.background-entry h3{font-size:17px}}.nav a[aria-current=page]{color:var(--blue)}.about-teaser{padding:38px 0}.about-teaser>.wrap{grid-template-columns:1fr 1fr;align-items:center;gap:60px;display:grid}.about-teaser h2{font:500 30px/1.15 var(--font-display),sans-serif;letter-spacing:-1px;margin:14px 0 0}.about-teaser p{color:#b4b7ac;max-width:430px;margin:0 0 15px;font-size:14px;line-height:1.7}.about-breadcrumb{justify-content:space-between;align-items:center;padding:26px 0;font-size:12px;display:flex}.about-breadcrumb .mono{color:var(--muted);font-size:9px}.about-full h1{font:500 clamp(38px,4.5vw,64px)/1.08 var(--font-display),sans-serif;letter-spacing:-2.5px;white-space:normal;margin:38px 0 0}.about-full h1 em{color:var(--lime);font-family:Georgia,serif;font-weight:400}.about-full .about-copy{padding-top:0}.about-next{align-items:center;gap:25px;padding:35px 0;display:flex}.about-next p{letter-spacing:-.3px;margin-right:auto;font-size:18px}.about-next .text-link{color:var(--ink)}@media (max-width:640px){.about-teaser>.wrap{grid-template-columns:1fr;gap:22px}.about-teaser h2{font-size:28px}.about-breadcrumb{gap:20px}.about-full h1{letter-spacing:-1.8px;margin-top:24px;font-size:42px}.about-next{flex-wrap:wrap;gap:20px}.about-next p{width:100%}.about-teaser{padding:32px 0}}.profile-page{padding:25px 0 30px}.profile-intro{grid-template-columns:1.6fr 1fr;align-items:center;gap:100px;padding:25px 0 65px;display:grid}.profile-intro h1{font:500 clamp(46px,5.5vw,78px)/1.05 var(--font-display),sans-serif;letter-spacing:-.055em;white-space:normal;margin:24px 0}.profile-intro h1>span{color:var(--blue)}.profile-role{font:400 23px/1.4 var(--font-display),sans-serif;letter-spacing:-.5px}.profile-bio{max-width:550px;color:var(--muted);margin:22px 0 28px;font-size:14px;line-height:1.8}.profile-actions{flex-wrap:wrap;align-items:center;gap:25px;display:flex}.profile-photo{border:1px solid var(--line);background:#fffefa;justify-self:center;max-width:290px;margin:0;padding:10px;transform:rotate(2deg)}.profile-photo img{width:100%;height:auto;display:block}.profile-photo figcaption{text-align:center;color:var(--muted);margin-top:12px;padding:2px 0 5px;font-size:8px}.career-section{border-top:1px solid var(--line);grid-template-columns:1fr 1.5fr;gap:80px;padding:38px 0;display:grid}.career-label>.mono{color:var(--muted);font-size:10px}.career-label h2{font:500 30px/1.15 var(--font-display),sans-serif;letter-spacing:-1px;margin-top:18px}.career-timeline{border-left:1px solid var(--line);padding-left:28px}.career-entry{padding:0 0 28px;position:relative}.career-entry:last-child{padding-bottom:0}.career-entry:before{content:"";background:var(--blue);border:2px solid var(--paper);border-radius:50%;width:9px;height:9px;position:absolute;top:5px;left:-28.5px;transform:translate(-50%)}.career-date{color:var(--muted);font-size:9px}.career-entry h3{font:500 21px/1.3 var(--font-display),sans-serif;letter-spacing:-.5px;margin:9px 0}.career-entry p{color:var(--muted);max-width:530px;font-size:13px;line-height:1.75}.career-entry .career-place{color:var(--ink);margin-bottom:9px}@media (max-width:900px){.profile-intro,.career-section{gap:40px}}@media (max-width:640px){.profile-page{padding-top:0}.profile-intro{grid-template-columns:1fr;gap:32px;padding:15px 0 40px}.profile-intro h1{font-size:49px}.profile-role{font-size:21px}.profile-photo{justify-self:start;width:190px}.career-section{grid-template-columns:1fr;gap:26px;padding:30px 0}.career-label h2{margin-top:12px;font-size:27px}.career-timeline{margin-left:5px}.career-entry h3{font-size:19px}}.career-with-logo{min-height:70px;padding-right:88px}.career-logo{border:1px solid var(--line);background:#fff;border-radius:0;place-items:center;width:60px;height:60px;display:grid;position:absolute;top:0;right:0;overflow:hidden}.career-logo img{object-fit:contain;width:56px;height:56px;display:block}@media (max-width:640px){.career-with-logo{padding-right:67px}.career-logo{border-radius:0;width:48px;height:48px}.career-logo img{width:44px;height:44px}}@media (max-width:700px){.problems{padding:38px 0 42px}.problem-layout{grid-template-columns:1fr;gap:26px}.problem-head h2{max-width:17ch;margin-top:18px;font-size:32px;line-height:1.1}.problem-head p{max-width:420px;margin-top:15px;font-size:13px}.problem-path{grid-template-columns:22px 1fr 30px;gap:11px;padding:17px 0}.path-question{letter-spacing:-.5px;font-size:19px}.path-copy{gap:6px}.path-answer{gap:7px;font-size:10px}.path-index{margin-top:4px;font-size:9px}.path-arrow{width:29px;height:29px;font-size:17px}.problem-path:hover,.problem-path:focus-visible{padding-left:0}.problem-paths{border-top-color:var(--line)}}.scroll-progress{z-index:60;background:var(--blue);transform-origin:0;height:2px;transform:scaleX(var(--progress,0));pointer-events:none;position:fixed;top:0;left:0;right:0}html.fx .hero h1{translate:0 calc(var(--hs,0)*.22px)}html.fx .hero-portrait{translate:0 calc(var(--hs,0)*-.12px)}html.fx [data-reveal]{transition:opacity .9s cubic-bezier(.22,1,.36,1),transform 1s cubic-bezier(.22,1,.36,1),filter .9s cubic-bezier(.22,1,.36,1),clip-path 1.1s cubic-bezier(.77,0,.18,1);transition-delay:calc(var(--d,0)*70ms)}html.fx [data-reveal=up]:not(.is-in){opacity:0;filter:blur(6px);transform:translateY(28px)}html.fx [data-reveal=mask]:not(.is-in){clip-path:inset(0 0 100%);transform:translateY(36px)}html.fx [data-reveal=mask].is-in{clip-path:inset(0 0 -12%)}html.fx [data-reveal=image]:not(.is-in){clip-path:inset(9% 7% round 6px)}html.fx [data-reveal=image].is-in{clip-path:inset(0)}html.fx [data-reveal=image] img{transition:transform 1.4s cubic-bezier(.22,1,.36,1)}html.fx [data-reveal=image]:not(.is-in) img{transform:scale(1.12)}@media (prefers-reduced-motion:reduce){.problem-path,.path-arrow{transition:none}.problem-path:hover .path-arrow,.problem-path:focus-visible .path-arrow{transform:none}}
