/*
! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,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,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{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{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;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;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: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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{--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:rgba(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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::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:rgba(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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.pointer-events-none{pointer-events:none}.fixed{position:fixed}.inset-0{inset:0}.z-0{z-index:0}.hidden{display:none}.resize{resize:both}.font-medium{font-weight:500}.italic{font-style:italic}:root{--paper:#fff;--ink:#0a0a0a;--muted:#595959;--line:#e5e5e5;--motion-hover:200ms;--motion-enter:700ms;--motion-greeting:2500ms;--motion-data:3200ms;--mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,DejaVu Sans,sans-serif;font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}a,button,input,summary,textarea{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--ink);outline-offset:5px}::-moz-selection{background:#e8e8e8}::selection{background:#e8e8e8}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.12;letter-spacing:-.035em}h1{font-weight:700}h2{font-size:clamp(30px,3vw,44px)}h2,h3{font-weight:600}h3{font-size:25px;letter-spacing:-.025em}em{font:inherit}p{color:var(--muted)}.site-footer,.site-header,.wrap{max-width:1320px;margin:auto;padding-left:48px;padding-right:48px}.site-header{display:flex;justify-content:space-between;align-items:center;min-height:112px;gap:24px}.site-header nav,.wordmark{font-family:var(--mono);font-size:14px;font-weight:400;letter-spacing:0}.site-header nav{display:flex;gap:0;color:var(--muted)}.site-header nav a{padding:8px 0}.site-header nav a+a:before{content:"·";display:inline-block;margin:0 20px;color:#777}.site-footer a:hover,.site-header nav a:hover,.social-links a:hover,.text-link:hover{text-decoration:underline;text-underline-offset:5px}.skip-link{position:absolute;left:20px;top:-100px;background:var(--ink);color:var(--paper);padding:12px;z-index:50}.skip-link:focus{top:16px}.eyebrow,.small-label{font-family:var(--mono);font-size:11px;letter-spacing:.035em;font-weight:400;color:var(--muted);line-height:1.6}.hero{padding-top:100px;display:flex;flex-direction:column;align-items:flex-start}.hero-art{width:200px;margin-bottom:26px}.developer{display:block;width:100%;height:auto}.hero-copy{width:100%}.hero-copy>.eyebrow{margin-bottom:18px}.hero-intro{font-size:32px;line-height:1.3;color:var(--ink);margin:0 0 24px;letter-spacing:-.025em}.hero h1.data-headline{font-size:clamp(52px,6.7vw,96px);line-height:1.04;letter-spacing:-.055em;max-width:1160px;margin:0 0 36px;font-weight:700}.intro{font-size:20px;line-height:1.75;max-width:850px}.hero-note{font-size:14px;max-width:820px;margin-top:18px}.hero-links{display:flex;align-items:center;gap:32px;flex-wrap:wrap;margin-top:30px}.text-link{font-family:var(--mono);font-size:13px}.primary-link{font-weight:600}.primary-link span{margin-left:8px}.hero-bottom{width:100%;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-top:70px;padding-bottom:25px;font:11px var(--mono);color:var(--muted)}.hero-bottom a{font-size:10px;letter-spacing:.02em}.section{padding-top:100px;padding-bottom:100px;border-bottom:1px solid var(--line)}.section-heading{display:grid;grid-template-columns:1.2fr 1fr;gap:16px 50px;align-items:end;margin-bottom:44px}.section-heading .eyebrow{grid-column:1/-1}.section-heading>p:last-child:not(.eyebrow){font-size:15px;max-width:500px}.work-row{display:grid;grid-template-columns:130px minmax(0,1fr) 30px;gap:35px;padding:36px 0;border-top:1px solid var(--line);align-items:center}.work-art{display:flex;align-items:center;justify-content:center;background:transparent}.sketch{width:100%;max-width:220px;height:auto}.work-row h3{font-size:clamp(23px,2.25vw,31px);margin:12px 0}.work-row p:not(.eyebrow){font-size:15px;max-width:730px}.project-status{display:block;font:11px var(--mono);color:var(--muted);margin-top:16px;line-height:1.7}.case-link{display:block;font:12px var(--mono);margin-top:14px}.work-arrow{font-size:24px;transition:transform var(--motion-hover)}.work-row:hover .work-arrow{transform:translate(3px,-3px)}.work-row:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}.other-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}.other-grid article{padding-top:22px;border-top:1px solid var(--line)}.project-number{font:12px var(--mono);color:var(--muted)}.other-grid h3{font-size:21px;margin:18px 0 14px}.other-grid p{font-size:14px;margin-bottom:20px}.principles{display:grid;grid-template-columns:1fr;gap:0;margin-top:30px}.principles article{display:grid;grid-template-columns:75px 35px 260px minmax(0,1fr);align-items:center;gap:25px;border-top:1px solid var(--line);padding:25px 0}.engineering-sketch{width:75px;height:60px}.handwritten{font-family:Georgia,serif;font-style:italic;font-size:18px}.principles .handwritten{font:12px var(--mono);color:var(--muted)}.principles h3{font-size:21px}.principles p{font-size:15px}.skills{padding-top:55px;margin-top:35px;border-top:1px solid var(--line)}.skills>h3{font-size:25px}.tags{display:flex;flex-wrap:wrap;gap:12px 20px;margin-top:22px}.tags span{font:12px var(--mono);color:var(--muted)}.primary-skills{margin-bottom:35px}.primary-skills span{font:600 19px Arial,sans-serif;color:var(--ink)}.primary-skills span+span:before{content:"/";font-weight:400;color:#999;margin-right:20px}.skills-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 50px}.skills-grid details{border-top:1px solid var(--line)}.skills-grid summary{cursor:pointer;padding:20px 0;display:flex;justify-content:space-between;gap:20px;font:12px var(--mono);line-height:1.7;min-height:66px}.skills-grid summary span{font-size:17px}.skills-grid p{font-size:14px;padding-bottom:24px}.timeline article{display:grid;grid-template-columns:200px minmax(0,1fr);gap:50px;border-top:1px solid var(--line);padding:32px 0}.timeline h3{font-size:25px;margin-bottom:12px}.timeline h3 span{font-weight:400;color:var(--muted)}.timeline p:not(.eyebrow):not(.small-label){font-size:15px;margin-top:18px;max-width:760px}.about{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:80px;align-items:center}.about h2,.contact h2{margin:18px 0 26px}.about p:not(.eyebrow){margin-top:18px;font-size:16px;max-width:760px}.about p.education{font-family:var(--mono);font-size:12px;margin-top:30px;line-height:2}.about-art{text-align:center}.about-art .sketch{max-width:160px}.about-art .handwritten{display:block;font-size:16px;margin-top:12px}.contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:100px}.contact p:not(.eyebrow){font-size:15px}.email-link{display:inline-block;margin-top:24px;font-size:18px;border-bottom:1px solid var(--ink)}.social-links{display:flex;gap:28px;font:12px var(--mono);margin-top:24px}.contact .sketch{max-width:130px;margin-top:28px}.contact-form{width:100%;align-self:center}.contact-form form{display:grid;gap:25px}.contact-form label{display:block;font:12px var(--mono);color:var(--muted)}.contact-form input,.contact-form textarea{width:100%;border:0;border-bottom:1px solid #b5b5b5;border-radius:0;background:transparent;color:var(--ink);padding:10px 0;resize:vertical}.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;background:var(--ink);color:var(--paper);padding:13px 22px;font:13px var(--mono);border:1px solid var(--ink);border-radius:0;transition:background var(--motion-hover),color var(--motion-hover);cursor:pointer}.button:hover{background:var(--paper);color:var(--ink)}.button:disabled{opacity:.6;cursor:wait}.form-success{border-top:1px solid var(--line);padding:28px 0}.form-success p{color:var(--ink)}.form-success button{margin-top:20px}.form-error{color:#942d24!important}.site-footer{padding-top:30px;padding-bottom:40px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;color:var(--muted);font:11px var(--mono);line-height:1.8}.case-study{padding-top:50px}.case-header{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:70px;align-items:center;padding:65px 0;border-bottom:1px solid var(--line)}.case-header h1{font-size:clamp(44px,5.7vw,78px);font-weight:700;margin:24px 0;letter-spacing:-.05em}.case-header .intro{font-size:18px;max-width:850px}.architecture{margin:45px 0 0;padding:20px 0;background:transparent;border-bottom:1px solid var(--line)}.diagram-scroll{overflow-x:auto}.architecture svg{display:block;width:100%;min-width:700px}.architecture figcaption{font:11px var(--mono);color:var(--muted);max-width:850px;margin:15px auto 20px;line-height:1.8}.case-content{max-width:800px;margin:0 auto}.case-content section{padding-top:65px}.case-content h2{font-size:32px;margin:18px 0 24px}.case-content p:not(.eyebrow){font-size:17px}.case-steps>div{display:flex;gap:30px;border-top:1px solid var(--line);padding:28px 0}.case-steps h3{font-size:23px;margin-bottom:12px}.case-steps .handwritten{font:12px var(--mono);min-width:30px;padding-top:5px}.case-content blockquote{font-size:25px;line-height:1.55;font-weight:500;letter-spacing:-.025em;margin:65px 0;padding-left:25px;border-left:2px solid var(--ink)}.next-study{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:30px;align-items:center;padding:40px 0 65px}.next-study>span:last-child{font-size:24px;max-width:650px;line-height:1.4}.reveal-ready{opacity:0;transform:translateY(14px);transition:opacity var(--motion-enter) ease,transform var(--motion-enter) ease}.reveal-ready.revealed{opacity:1;transform:none}.wave-arm{transform-origin:228px 185px;animation:wave var(--motion-greeting) ease-in-out .3s 1}.hi-bubble{animation:hello var(--motion-greeting) ease both}.flow-dot{animation:data-flow var(--motion-data) linear infinite;offset-distance:0}@keyframes wave{0%,to{transform:rotate(0)}20%,55%{transform:rotate(12deg)}38%,72%{transform:rotate(-8deg)}}@keyframes hello{0%{opacity:0;transform:translateY(6px)}20%,to{opacity:1;transform:none}}@keyframes data-flow{to{offset-distance:100%}}@media (max-width:900px){.site-footer,.site-header,.wrap{padding-left:32px;padding-right:32px}.site-header nav a+a:before{margin:0 12px}.hero{padding-top:75px}.hero h1.data-headline{font-size:clamp(52px,7.5vw,70px)}.work-row{grid-template-columns:100px minmax(0,1fr) 25px;gap:25px}.principles article{grid-template-columns:65px 25px minmax(0,1fr);gap:20px}.principles p{grid-column:3}.principles .engineering-sketch{grid-row:1/3;width:65px}.principles .handwritten{grid-row:1/3}.timeline article{grid-template-columns:160px minmax(0,1fr);gap:30px}.about{grid-template-columns:minmax(0,1fr) 140px;gap:35px}.contact{gap:50px}.case-header{grid-template-columns:minmax(0,1fr) 120px;gap:35px}}@media (max-width:600px){.site-footer,.site-header,.wrap{padding-left:24px;padding-right:24px}.site-header{align-items:flex-start;flex-direction:column;gap:14px;padding-top:28px;padding-bottom:24px;min-height:auto}.wordmark{font-size:13px}.site-header nav{flex-wrap:wrap;font-size:11px;gap:8px 16px}.site-header nav a+a:before{display:none}.hero{padding-top:55px}.hero-art{width:155px;margin-bottom:22px}.hero-copy>.eyebrow{font-size:10px}.hero-intro{font-size:26px;margin-bottom:20px}.hero h1.data-headline{font-size:clamp(43px,10.8vw,61px);letter-spacing:-.05em;margin-bottom:28px;overflow-wrap:normal}.intro{font-size:17px}.hero-note{font-size:13px}.hero-links{gap:22px}.hero-bottom{margin-top:50px}.section{padding-top:65px;padding-bottom:65px}.section-heading{grid-template-columns:1fr;gap:15px;margin-bottom:32px}.section-heading>p:last-child:not(.eyebrow){font-size:14px}.work-row{grid-template-columns:minmax(0,1fr) 25px;gap:20px;padding:28px 0}.work-art{grid-column:1/-1;justify-content:flex-start}.work-art .sketch{max-width:100px}.work-row h3{font-size:26px}.work-row p:not(.eyebrow){font-size:14px}.work-row .eyebrow{font-size:10px}.other-grid{grid-template-columns:1fr;gap:28px}.other-grid h3{margin-top:12px}.other-grid p{margin-bottom:16px}.principles article{grid-template-columns:45px minmax(0,1fr);gap:12px 20px;padding:25px 0}.principles .engineering-sketch{grid-row:1/4;width:45px;height:auto}.principles .handwritten{grid-column:2;grid-row:1}.principles h3,.principles p{grid-column:2}.principles h3{font-size:20px}.principles p{font-size:14px}.primary-skills{gap:12px 14px}.primary-skills span{font-size:17px}.primary-skills span+span:before{margin-right:14px}.skills-grid,.timeline article{grid-template-columns:1fr}.timeline article{gap:18px}.timeline h3{font-size:23px}.timeline p:not(.eyebrow):not(.small-label){font-size:14px}.about{grid-template-columns:1fr;gap:30px}.about p:not(.eyebrow){font-size:15px}.about p.education{font-size:11px}.about-art{max-width:160px}.contact{grid-template-columns:1fr;gap:40px}.contact .sketch,.site-footer>span:nth-child(2){display:none}.case-study{padding-top:30px}.case-header{grid-template-columns:1fr;gap:24px;padding:35px 0}.case-header h1{font-size:clamp(40px,10vw,52px)}.case-header .sketch{max-width:110px}.case-header .intro{font-size:16px}.architecture{margin-top:30px}.architecture figcaption{font-size:10px}.case-content section{padding-top:45px}.case-content h2{font-size:28px}.case-content p:not(.eyebrow){font-size:16px}.case-steps>div{gap:20px}.case-content blockquote{font-size:22px}.next-study{align-items:flex-start;flex-direction:column}.next-study>span:last-child{font-size:22px}.tags{gap:10px 14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition:none!important}.reveal-ready{opacity:1;transform:none}.flow-dot{display:none}}.site-header nav{text-transform:lowercase}.nav-arrow{display:inline-block;width:18px;height:18px;flex-shrink:0;vertical-align:-3px;overflow:visible}.nav-arrow-right{transform:rotate(45deg)}.nav-arrow-down{transform:rotate(135deg)}.nav-arrow-left{transform:rotate(225deg)}.work-arrow{display:flex;align-items:center;justify-content:center;justify-self:end;width:24px;height:24px;min-width:0}.work-row>div:not(.work-art){min-width:0}.case-header h1,.email-link,.next-study>span:last-child,.project-status,.work-row h3,.work-row p{overflow-wrap:anywhere}.email-link{max-width:100%;word-break:normal}.social-links{flex-wrap:wrap;row-gap:16px}.developer,.engineering-sketch,.illustration,.sketch{color:var(--ink)}@media (max-width:600px){.work-row{grid-template-columns:minmax(0,1fr) 24px;-moz-column-gap:14px;column-gap:14px}.work-arrow{align-self:start;margin-top:24px}.research .work-arrow{margin-top:0}.email-link{font-size:17px}.site-footer a{overflow-wrap:anywhere}}