body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-color);font-family:var(--font-body);font-size:var(--type-body);font-weight:var(--weight-body);line-height:var(--leading-body);margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--color-background:#fafaf8;--color-text:#171a20;--color-muted:#515966;--color-accent:#526f8d;--color-accent-rgb:82,111,141;--surface-solid:#f5f6f8;--surface-subtle:var(--surface-solid);--surface-glass:color-mix(in srgb,var(--surface-solid) 82%,#0000);--color-border:color-mix(in srgb,var(--color-muted) 18%,#0000);--shadow-surface:0 12px 40px var(--color-shadow);--color-shadow:#0e10130d;--color-overlay:#0e101373;--wash-blue:#93b1cc12;--wash-violet:#b8aad20f;--wash-warm:#e0b6ac0f;--wash-soft:#d9b1c20d;--hero-cyan:#8fd7e03d;--hero-blue:#99b5e042;--hero-lavender:#c2ace23d;--hero-peach:#ecc5b12e;--interaction-glow:color-mix(in srgb,var(--color-accent) 10%,#0000);--art-glow:color-mix(in srgb,var(--color-accent) 10%,#0000);--art-border:color-mix(in srgb,var(--color-accent) 35%,#0000);--art-fill:color-mix(in srgb,var(--color-accent) 20%,#0000);--art-shade:color-mix(in srgb,var(--color-muted) 5%,#0000);--art-shadow:8px 15px 25px var(--color-shadow),inset 1px 1px 0 var(--art-border);--font-body:"Instrument Sans","Segoe UI",Arial,sans-serif;--font-heading:var(--font-body);--font-brand:"Space Grotesk",var(--font-body);--weight-body:400;--weight-label:500;--weight-heading:600;--type-hero:clamp(42px,4.6vw,64px);--type-page:clamp(40px,4.6vw,60px);--type-section:clamp(28px,3vw,38px);--type-title:22px;--type-lead:clamp(19px,2vw,23px);--type-body:17px;--type-small:16px;--type-ui:15px;--type-meta:14px;--type-label:13px;--leading-body:1.75;--leading-heading:1.12;--tracking-heading:-0.045em;--tracking-title:-0.025em;--tracking-label:0.1em;--space-1:8px;--space-2:12px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--space-7:64px;--radius-control:12px;--radius-surface:20px;--bg-color:var(--color-background);--text-color:var(--color-text);--text-secondary:var(--color-muted);--border-color:var(--color-border);--nav-bg:var(--surface-solid);--quote-box-bg:var(--surface-subtle);--highlight-color:var(--color-accent);--highlight-color-rgb:var(--color-accent-rgb);--home-bg:var(--color-background);--home-ink:var(--color-text);--home-muted:var(--color-muted);--home-accent:var(--color-accent);--home-surface:var(--surface-subtle);--glass-nav:var(--surface-glass);--glass-card:var(--surface-glass);--glass-border:var(--color-border);--glass-shadow:var(--shadow-surface);--home-line:var(--color-border);color-scheme:light}:root[data-theme=dark]{--color-background:#0e1013;--color-text:#f3f4f6;--color-muted:#aeb4be;--color-accent:#9db9d5;--color-accent-rgb:157,185,213;--surface-solid:#171a20;--color-shadow:#0000001f;--wash-blue:#465e820f;--wash-violet:#6653890d;--wash-warm:#406e6e0d;--wash-soft:#505b770a;--hero-cyan:#376f7838;--hero-blue:#3c558c47;--hero-lavender:#644c8b3d;--hero-peach:#7e5d561f;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--color-background:#0e1013;--color-text:#f3f4f6;--color-muted:#aeb4be;--color-accent:#9db9d5;--color-accent-rgb:157,185,213;--surface-solid:#171a20;--color-shadow:#0000001f;--wash-blue:#465e820f;--wash-violet:#6653890d;--wash-warm:#406e6e0d;--wash-soft:#505b770a;--hero-cyan:#376f7838;--hero-blue:#3c558c47;--hero-lavender:#644c8b3d;--hero-peach:#7e5d561f;color-scheme:dark}}*{box-sizing:border-box;color:#171a20;color:var(--text-color);margin:0;padding:0}#root,body,html{height:100%;min-height:100vh}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.App{align-items:center;background-color:#fafaf8;background-color:var(--bg-color);display:flex;flex-direction:column;min-height:100vh;padding:50px;width:100%}.container{display:flex;flex:1 1;flex-direction:column;width:65%}.highlight{color:#526f8d;color:var(--highlight-color);text-decoration:none}.App.App--portfolio{background:#fafaf8;background:var(--home-bg);isolation:isolate;padding:28px 40px 0;position:relative}.portfolio-atmosphere-boundary{--ambient-near:12%;--ambient-far:88%;--ambient-start:5%;--ambient-middle:46%;inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:-1}.App[data-page="/work"] .portfolio-atmosphere-boundary{--ambient-near:24%;--ambient-far:94%;--ambient-start:3%;--ambient-middle:43%}.App[data-page="/about"] .portfolio-atmosphere-boundary{--ambient-near:85%;--ambient-far:10%;--ambient-start:9%;--ambient-middle:51%}.App[data-page="/writing"] .portfolio-atmosphere-boundary{--ambient-near:6%;--ambient-far:78%;--ambient-start:12%;--ambient-middle:55%}.App[data-page="/contact"] .portfolio-atmosphere-boundary{--ambient-near:90%;--ambient-far:18%;--ambient-start:0%;--ambient-middle:60%}.App--home .portfolio-atmosphere-boundary{-webkit-mask-image:linear-gradient(#0000 400px,#000 800px);mask-image:linear-gradient(#0000 400px,#000 800px)}.portfolio-atmosphere{background:radial-gradient(ellipse 58% 650px at var(--ambient-near) var(--ambient-start),#8fd7e03d,#0000 85%),radial-gradient(ellipse 65% 750px at var(--ambient-far) 18%,#c2ace23d,#0000 85%),radial-gradient(ellipse 48% 600px at 40% 29%,#ecc5b12e,#0000 85%),radial-gradient(ellipse 62% 800px at var(--ambient-near) var(--ambient-middle),#99b5e042,#0000 85%),radial-gradient(ellipse 56% 700px at var(--ambient-far) 57%,#8fd7e03d,#0000 85%),radial-gradient(ellipse 70% 650px at 35% 70%,#c2ace23d,#0000 85%),radial-gradient(ellipse 54% 800px at var(--ambient-far) 84%,#99b5e042,#0000 85%),radial-gradient(ellipse 64% 700px at var(--ambient-near) 96%,#ecc5b12e,#0000 85%);background:radial-gradient(ellipse 58% 650px at var(--ambient-near) var(--ambient-start),var(--hero-cyan),#0000 85%),radial-gradient(ellipse 65% 750px at var(--ambient-far) 18%,var(--hero-lavender),#0000 85%),radial-gradient(ellipse 48% 600px at 40% 29%,var(--hero-peach),#0000 85%),radial-gradient(ellipse 62% 800px at var(--ambient-near) var(--ambient-middle),var(--hero-blue),#0000 85%),radial-gradient(ellipse 56% 700px at var(--ambient-far) 57%,var(--hero-cyan),#0000 85%),radial-gradient(ellipse 70% 650px at 35% 70%,var(--hero-lavender),#0000 85%),radial-gradient(ellipse 54% 800px at var(--ambient-far) 84%,var(--hero-blue),#0000 85%),radial-gradient(ellipse 64% 700px at var(--ambient-near) 96%,var(--hero-peach),#0000 85%);filter:blur(60px);inset:-60px;opacity:.7;pointer-events:none;position:absolute;transform:translate(0);transform:translate(var(--wash-x,0),var(--wash-y,0));transition:transform 1.6s ease-out}@media (hover:none),(max-width:820px),(pointer:coarse),(prefers-reduced-motion:reduce){.portfolio-atmosphere{transform:none;transition:none}}.container--portfolio{max-width:1160px;width:100%}.skip-link{background:#fafaf8;background:var(--bg-color);border:2px solid #526f8d;border:2px solid var(--home-accent);border-radius:8px;left:16px;padding:12px 18px;position:fixed;top:8px;transform:translateY(-150%);z-index:30}.skip-link:focus{transform:translateY(0)}@media (min-width:350px) and (max-width:1000px){.container{width:100%}.App{padding:15px}}@media (min-width:750px) and (max-width:1024px){.container{width:80%}.App{padding:15px}}@media (min-width:810px) and (max-width:1080px){.container{width:80%}.App{padding:15px}}@media (min-width:820px) and (max-width:1180px){.container{width:100%}.App{padding:20px}}.App--portfolio .container--portfolio{width:100%}@media (max-width:820px){.App.App--portfolio{padding:16px 20px 0}}.site-header{position:sticky;top:20px;width:100%;z-index:20}.nav{align-items:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:var(--glass-nav);border:1px solid #0000;border-radius:22px;box-shadow:var(--glass-shadow);display:flex;gap:24px;justify-content:space-between;min-height:72px;padding:10px 18px 10px 26px}.logo-name{font-family:var(--font-brand);font-size:29px;font-weight:600;letter-spacing:-2px;text-decoration:none}.logo-name span{color:var(--home-accent)}.nav-links{align-items:center;display:flex;gap:26px;list-style:none;margin:0;padding:0}.nav .links{align-items:center;color:var(--text-secondary);display:inline-flex;font-size:var(--type-ui);font-weight:var(--weight-label);min-height:44px;text-decoration:none;transition:color .18s ease}.nav .links:hover,.nav .links[aria-current=page]{color:var(--home-accent)}.nav-utilities{align-items:center;display:flex;gap:2px}.hamburger,.theme-system,.theme-toggle{align-items:center;background:#0000;border:0;border-radius:var(--radius-control);color:var(--text-secondary);cursor:pointer;display:inline-flex;font:inherit;justify-content:center;min-height:44px;min-width:44px;padding:8px;transition:background .18s ease,color .18s ease}.theme-toggle svg,.theme-toggle svg *{color:inherit}.theme-system{font-size:var(--type-meta)}.theme-system[aria-pressed=true]{color:var(--home-accent)}.hamburger:hover,.theme-system:hover,.theme-toggle:hover{background:var(--home-surface);color:var(--text-color)}.nav a:focus-visible,.nav button:focus-visible{outline:2px solid var(--home-accent);outline-offset:4px}.hamburger,.overlay{display:none}@media (max-width:1000px) and (min-width:821px){.nav{gap:12px;padding-left:20px}.nav-links{gap:16px}}@media (max-width:820px){.site-header{top:12px}.nav{border-radius:18px;min-height:64px;padding:8px 10px 8px 20px;position:relative;z-index:1}.nav-links{background:var(--nav-bg);border:1px solid var(--glass-border);border-radius:18px;box-shadow:var(--glass-shadow);display:none;gap:0;left:0;padding:12px;position:absolute;right:0;top:calc(100% + 10px)}.nav-links.active{align-items:stretch;display:flex;flex-direction:column}.nav .links{border-radius:10px;font-size:var(--type-body);min-height:48px;padding:0 16px;width:100%}.nav .links:hover{background:var(--home-surface)}.hamburger{display:flex;flex-direction:column;gap:6px}.hamburger span{background:currentColor;height:1px;transition:transform .18s ease;width:20px}.hamburger.active span:first-child{transform:translateY(3.5px) rotate(45deg)}.hamburger.active span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.overlay{background:var(--color-overlay);display:block;inset:0;position:fixed}}@media (prefers-reduced-motion:reduce){.nav *{transition:none}}.footer{margin-top:auto;padding-bottom:20px;padding-top:80px;width:100%}.footer-text{color:var(--text-secondary);text-align:center}@media (min-width:350px) and (max-width:1000px){.footer{margin-bottom:20px}}@media (min-width:750px) and (max-width:1024px){.footer{margin-bottom:20px}}@media (min-width:810px) and (max-width:1080px){.footer{margin-bottom:20px;padding:0}}.engineering-ecosystem{--eco-blue:color-mix(in srgb,var(--color-accent) 70%,var(--color-text));--eco-cyan:color-mix(in srgb,#69bfc8 60%,var(--color-text));--eco-lavender:color-mix(in srgb,#a795cf 65%,var(--color-text));--eco-line:color-mix(in srgb,var(--eco-blue) 30%,#0000);justify-self:center;margin:0;max-width:540px;min-width:0;position:relative;width:100%}.ecosystem-caption{color:var(--color-muted);display:flex;font-size:11px;font-weight:500;justify-content:space-between;letter-spacing:.09em;padding:0 12px;text-transform:uppercase}.ecosystem-stage{height:clamp(440px,34vw,480px);perspective:900px;position:relative}.ecosystem-plane{inset:14px 8px;position:absolute;transform:rotateX(0deg) rotateY(0deg);transform:rotateX(var(--eco-rx,0deg)) rotateY(var(--eco-ry,0deg));transform-style:preserve-3d;transition:transform .65s cubic-bezier(.2,.7,.3,1)}.ecosystem-light{background:radial-gradient(ellipse at 50% 50%,var(--hero-cyan),#0000 65%);background:radial-gradient(ellipse at var(--eco-light-x,50%) var(--eco-light-y,50%),var(--hero-cyan),#0000 65%);filter:blur(25px);inset:5%;pointer-events:none;position:absolute}.ecosystem-connections{fill:none;stroke:var(--eco-line);stroke-width:.3;height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.ecosystem-edge,.ecosystem-line{transition:stroke .45s ease,opacity .45s ease,stroke-width .45s ease}.ecosystem-edge{stroke-dasharray:1 2;opacity:.45}.ecosystem-flow{stroke:var(--eco-cyan);stroke-width:.45;stroke-dasharray:.8 7.2;stroke-linecap:round;animation:ecosystem-signal 8s linear infinite;opacity:.3;transition:opacity .45s ease,stroke-width .45s ease}.ecosystem-connections [data-connected=true] .ecosystem-line,.ecosystem-edge[data-connected=true]{stroke:var(--eco-lavender);stroke-width:.5;opacity:1}.ecosystem-connections [data-connected=true] .ecosystem-flow{stroke:var(--eco-cyan);stroke-width:.65;opacity:1}.ecosystem-core{--eco-tone:var(--eco-cyan);left:50%;pointer-events:none;position:absolute;text-align:center;top:49%;transform:translate(-50%,-50%) translateZ(52px);width:132px}.ecosystem-core[data-node=infrastructure],.ecosystem-core[data-node=software]{--eco-tone:var(--eco-blue)}.ecosystem-core[data-node=product]{--eco-tone:var(--eco-lavender)}.ecosystem-core-motion{transform:translate(0) rotate(0deg);transform:translate(var(--eco-core-x,0),var(--eco-core-y,0)) rotate(var(--eco-core-turn,0deg));transition:transform .65s cubic-bezier(.2,.7,.3,1)}.ecosystem-core-mark{animation:ecosystem-core-breathe 7s ease-in-out infinite alternate;height:48px;margin:0 auto 12px;position:relative;transform:rotate(-30deg) skew(8deg);width:48px}.ecosystem-core-mark span{background:linear-gradient(135deg,var(--hero-cyan),var(--hero-lavender));border:1px solid var(--eco-line);box-shadow:0 8px 26px var(--interaction-glow),inset 0 1px 0 var(--surface-solid);inset:0;position:absolute;transition:border-color .45s ease,box-shadow .45s ease,background .45s ease}.ecosystem-core-mark span:nth-child(2){transform:translate(7px,-7px)}.ecosystem-core-mark span:nth-child(3){transform:translate(14px,-14px)}.ecosystem-core[data-active=true] .ecosystem-core-mark span{background:linear-gradient(135deg,var(--hero-cyan),color-mix(in srgb,var(--eco-tone) 28%,#0000));border-color:var(--eco-tone);box-shadow:0 8px 35px var(--hero-blue),0 0 18px color-mix(in srgb,var(--eco-tone) 18%,#0000)}.ecosystem-core>span{color:var(--color-muted);display:block;font-size:9px;letter-spacing:.14em}.ecosystem-core strong{display:block;font-size:12px;font-weight:500;margin-top:5px}.ecosystem-node{--eco-tone:var(--eco-cyan);max-width:210px;position:absolute;transform:translate(-50%,-50%) translateZ(24px);transform-style:preserve-3d;width:43%;z-index:1}.ecosystem-node--ai{left:24%;top:17%}.ecosystem-node--software{--eco-tone:var(--eco-blue);left:76%;top:17%}.ecosystem-node--infrastructure{--eco-tone:var(--eco-blue);left:24%;top:81%}.ecosystem-node--product{--eco-tone:var(--eco-lavender);left:76%;top:81%}.ecosystem-node[data-selected=true]{z-index:5}.ecosystem-node-float{animation:ecosystem-float 8s ease-in-out infinite alternate;transform-style:preserve-3d}.ecosystem-node--software .ecosystem-node-float{animation-delay:-3s}.ecosystem-node--infrastructure .ecosystem-node-float{animation-delay:-6s}.ecosystem-node--product .ecosystem-node-float{animation-delay:-2s}.ecosystem-node-button{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb,var(--surface-solid) 88%,#0000);border:1px solid color-mix(in srgb,var(--eco-tone) calc(22% + var(--eco-near, 0)*30%),#0000);border-radius:14px;box-shadow:0 8px 28px var(--color-shadow);color:var(--color-text);cursor:pointer;display:block;font:inherit;padding:14px;text-align:left;transform:translate(0);transform:translate(var(--eco-mx,0),var(--eco-my,0));transition:transform .45s ease,background .45s ease,border-color .45s ease,box-shadow .45s ease,opacity .45s ease;width:100%}.ecosystem-node-top{align-items:center;color:var(--eco-tone);display:flex;font-size:10px;justify-content:space-between;letter-spacing:.1em;margin-bottom:10px}.ecosystem-node-top svg{height:22px;transition:transform .45s ease,filter .45s ease;width:22px}.engineering-ecosystem[data-active=true] .ecosystem-node[data-selected=false] .ecosystem-node-button{opacity:.76}.engineering-ecosystem[data-active=true] .ecosystem-node[data-related=true] .ecosystem-node-button{opacity:.88}.ecosystem-node[data-selected=true] .ecosystem-node-top svg{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--eco-tone) 40%,transparent));transform:translateY(-1px) scale(1.16)}.ecosystem-node-name{display:block;font-size:clamp(12px,1.1vw,15px);font-weight:600;line-height:1.35}.ecosystem-node-reveal{color:var(--color-muted);display:grid;font-size:11px;grid-template-rows:0fr;line-height:1.55;opacity:0;transition:grid-template-rows .45s ease,opacity .45s ease,margin-top .45s ease}.ecosystem-node-reveal>span{overflow:hidden}.ecosystem-node[data-selected=true] .ecosystem-node-reveal{grid-template-rows:1fr;margin-top:8px;opacity:1}.ecosystem-node[data-selected=true] .ecosystem-node-button{background:var(--surface-solid);border-color:var(--eco-tone);box-shadow:0 12px 40px var(--interaction-glow),0 0 22px var(--hero-cyan);transform:translate3d(0,-5px,10px) scale(1.05);transform:translate3d(var(--eco-mx,0),calc(var(--eco-my, 0px) - 5px),10px) scale(1.05)}.ecosystem-node[data-related=true] .ecosystem-node-button{border-color:color-mix(in srgb,var(--eco-tone) 55%,#0000);box-shadow:0 6px 24px var(--interaction-glow)}.ecosystem-node-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.ecosystem-detail{min-height:160px;padding:8px 12px 0}.ecosystem-detail-label{font-size:var(--type-ui);font-weight:500}.ecosystem-detail p{color:var(--color-muted);font-size:var(--type-meta);line-height:1.65;margin:8px 0 10px;max-width:480px}.ecosystem-hint{color:var(--color-muted);font-size:11px;line-height:1.5}@keyframes ecosystem-float{0%{transform:translateY(-4px)}to{transform:translateY(4px)}}@keyframes ecosystem-signal{to{stroke-dashoffset:-32}}@keyframes ecosystem-core-breathe{0%{transform:rotate(-30deg) skew(8deg) translateY(-2px)}to{transform:rotate(-24deg) skew(8deg) translateY(3px)}}.ecosystem-stage[data-visible=false] *{animation-play-state:paused}@media (max-width:820px){.engineering-ecosystem{margin-top:32px}.ecosystem-stage{height:480px}.ecosystem-node-name{font-size:14px}.ecosystem-detail{min-height:190px}}@media (max-width:380px){.ecosystem-node-button{padding:10px}.ecosystem-node-name{font-size:12px}.ecosystem-core{width:110px}.ecosystem-core strong{font-size:11px}.ecosystem-detail{min-height:210px}}@media (hover:none),(pointer:coarse){.ecosystem-plane{transform:none}}@media (prefers-reduced-motion:reduce){.engineering-ecosystem *,.engineering-ecosystem .ecosystem-core-mark span,.engineering-ecosystem .ecosystem-node-top svg,.engineering-ecosystem :after,.engineering-ecosystem :before{animation:none;transition:none}.ecosystem-core-motion,.ecosystem-node-button,.ecosystem-node[data-selected=true] .ecosystem-node-button,.ecosystem-node[data-selected=true] .ecosystem-node-top svg,.ecosystem-plane{transform:none}}.home{color:var(--home-ink);isolation:isolate;position:relative}.home *{color:inherit}.home h1,.home h2,.home h3,.home h4{font-family:var(--font-heading);font-weight:var(--weight-heading)}.home a{text-decoration:none}.home a:focus-visible{border-radius:4px;outline:2px solid var(--home-accent);outline-offset:5px}.home-hero{grid-gap:12px;align-items:center;display:grid;gap:12px;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);isolation:isolate;min-height:640px;padding:90px 0 80px;position:relative}.home-hero-copy{max-width:640px}.hero-atmosphere{inset:-20px -20px 0;-webkit-mask-composite:source-in,xor;mask-composite:intersect;-webkit-mask-image:linear-gradient(0deg,#0000,#000 18%,#000 82%,#0000),linear-gradient(90deg,#0000,#000 8%,#000 92%,#0000);mask-image:linear-gradient(0deg,#0000,#000 18%,#000 82%,#0000),linear-gradient(90deg,#0000,#000 8%,#000 92%,#0000);overflow:hidden;pointer-events:none;position:absolute;transform:translate(0);transform:translate(var(--wash-x,0),var(--wash-y,0));transition:transform 1.8s ease-out;z-index:-1}.hero-atmosphere-colours{animation:hero-atmosphere-float 24s ease-in-out infinite alternate;background:radial-gradient(ellipse 32% 38% at 70% 32%,var(--hero-lavender),#0000 85%),radial-gradient(ellipse 38% 36% at 92% 63%,var(--hero-blue),#0000 85%),radial-gradient(ellipse 42% 34% at 58% 72%,var(--hero-cyan),#0000 85%),radial-gradient(ellipse 30% 42% at 90% 15%,var(--hero-peach),#0000 85%),radial-gradient(ellipse 38% 48% at 20% 30%,var(--wash-blue),#0000 85%);filter:blur(42px);inset:-40px;position:absolute}@keyframes hero-atmosphere-float{0%{transform:translate(-5px,4px) scale(1)}to{transform:translate(6px,-5px) scale(1.025)}}.home-hero[data-ambient-visible=false] .hero-atmosphere-colours{animation-play-state:paused}@media (hover:none),(max-width:820px),(pointer:coarse){.hero-atmosphere{transform:none;transition:none}}@media (prefers-reduced-motion:reduce){.hero-atmosphere{transform:none;transition:none}.hero-atmosphere-colours{animation:none}}.home-eyebrow{color:var(--home-muted);font-size:var(--type-label);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);margin-bottom:12px;text-transform:uppercase}.home-role{color:var(--home-muted);font-size:var(--type-ui)}.home h1{font-size:var(--type-page);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin:30px 0 24px}.home-hero h1{font-size:clamp(42px,5vw,68px);letter-spacing:-.05em;line-height:1.06}.home h1 span,.home-intro{color:var(--home-muted)}.home-intro{font-size:var(--type-lead);font-weight:var(--weight-body);line-height:var(--leading-body);max-width:430px}.home-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-5)}.home-button{align-items:center;border:1px solid var(--home-line);border-radius:var(--radius-control);display:inline-flex;font-size:var(--type-ui);font-weight:var(--weight-label);gap:20px;justify-content:center;min-height:48px;padding:13px 20px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.home-button-primary{background:var(--home-ink);border-color:var(--home-ink);color:var(--home-bg)}.home-button-secondary{background:var(--home-surface)}.home-button:hover{box-shadow:0 6px 24px var(--interaction-glow);transform:translateY(-3px)}.home-button-secondary:hover{border-color:var(--home-accent)}.home-section{padding:68px 0;scroll-margin-top:120px}.home-section-heading{align-items:flex-end;display:flex;gap:28px;justify-content:space-between;margin-bottom:32px}.home h2{font-size:var(--type-section);letter-spacing:var(--tracking-heading);line-height:1.2}.home-section-heading>p{color:var(--home-muted);font-size:var(--type-ui);line-height:1.6;max-width:240px}.home-article-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(3,minmax(0,1fr))}.home-about{grid-gap:clamp(32px,6vw,88px);align-items:start;display:grid;gap:clamp(32px,6vw,88px);grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.home-about .home-text-link{margin-top:24px}.home-about-copy{color:var(--home-muted);font-size:var(--type-body);line-height:var(--leading-body)}.home-about-quote{border-left:2px solid color-mix(in srgb,var(--color-accent) 45%,#0000);margin:clamp(32px,4vw,48px) 0 0;max-width:380px;padding-left:20px}.home-about-quote blockquote{color:var(--home-ink);font-size:clamp(19px,1.8vw,23px);font-weight:var(--weight-label);letter-spacing:var(--tracking-title);line-height:1.55;margin:14px 0 16px}.home-about-quote figcaption{color:var(--home-muted);font-size:var(--type-meta);line-height:1.6}.home-about-copy p+p{margin-top:20px}.home-about-tagline{color:var(--home-ink);font-size:var(--type-lead);font-weight:var(--weight-label);letter-spacing:var(--tracking-title);line-height:1.5}.home-project{grid-gap:clamp(32px,6vw,88px);align-items:center;display:grid;gap:clamp(32px,6vw,88px);grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-width:0}.home-project-grid{grid-gap:clamp(64px,9vw,112px);display:grid;gap:clamp(64px,9vw,112px);margin-top:56px}.home-project:nth-child(2n) .home-project-art{order:2}.home-project--depot{--project-tone:color-mix(in srgb,#438c7a 65%,var(--color-text))}.home-project--water{--project-tone:color-mix(in srgb,#518db4 65%,var(--color-text))}.home-project--dyarcom{--project-tone:color-mix(in srgb,#ad875e 65%,var(--color-text))}.home-project-art{background:radial-gradient(ellipse at center,color-mix(in srgb,var(--project-tone) 10%,#0000),#0000 70%);display:grid;height:320px;overflow:hidden;place-items:center;position:relative}.home-project-number{color:var(--home-muted);font-family:var(--font-brand);font-size:var(--type-meta);left:22px;position:absolute;top:20px}.project-illustration{color:var(--project-tone);height:auto;max-height:100%;max-width:480px;width:100%}.project-tint{fill:color-mix(in srgb,var(--project-tone) 10%,#0000)}.project-solid{fill:var(--project-tone)}.project-guide{opacity:.3}.project-signal{stroke-dasharray:4 6}.home-project-copy{display:flex;flex-direction:column;min-width:0;padding:12px 0}.home-project-category{color:var(--home-muted);font-size:var(--type-label);font-weight:var(--weight-label);letter-spacing:var(--tracking-label);text-transform:uppercase}.home-project h3{font-size:clamp(28px,3.2vw,42px);letter-spacing:var(--tracking-title);line-height:1.15;margin:14px 0 20px}.home-project-copy>p:not(.home-project-category){color:var(--home-muted);font-size:var(--type-body);line-height:var(--leading-body)}.home-project-contribution{margin:14px 0 24px}.home-project-label{color:var(--home-ink);display:block;font-size:var(--type-meta);font-weight:var(--weight-label);margin-bottom:6px}.home-project-tags{display:flex;flex-wrap:wrap;gap:8px 20px;list-style:none;margin-top:auto;padding:0}.home-project-tags li{color:var(--home-muted);font-size:var(--type-meta);padding:0}.home-text-link{align-items:center;color:var(--home-ink);display:inline-flex;font-size:var(--type-ui);gap:10px;min-height:44px}.home-text-link:hover{color:var(--home-accent)}.home-project .home-text-link{align-self:flex-start;margin-top:16px}.home-article>a{display:flex;flex-direction:column;height:100%;padding:24px 8px 16px 0}.home-article-meta{color:var(--home-muted);display:flex;flex-wrap:wrap;font-size:var(--type-meta);gap:8px;justify-content:space-between}.home-article h3{font-size:var(--type-title);letter-spacing:var(--tracking-title);line-height:1.4;margin:24px 0 16px;transition:color .18s ease}.home-article p{color:var(--home-muted);font-size:var(--type-small);line-height:var(--leading-body);margin-bottom:24px}.home-article-read{align-items:center;display:flex;font-size:var(--type-meta);justify-content:space-between;margin-top:auto;min-height:44px}.home-article a:focus-visible h3,.home-article:hover h3{color:var(--home-accent)}.home-article-read svg{transition:transform .18s ease}.home-article a:hover svg{transform:translate(2px,-2px)}.home-feed-message{color:var(--home-muted);font-size:var(--type-body);line-height:var(--leading-body);padding:32px 0}.home-feed-error a{align-items:center;color:var(--home-accent);display:inline-flex;gap:8px;text-decoration:underline;text-underline-offset:4px}.home-contact{align-items:center;display:flex;gap:40px;justify-content:space-between;padding:72px 0 40px}.home-contact h2{font-size:clamp(32px,4vw,48px)}.home-contact p:not(.home-eyebrow){color:var(--home-muted);font-size:var(--type-body);line-height:var(--leading-body);margin-top:22px}.home-contact-actions{align-items:flex-start;display:flex;flex-direction:column;gap:16px}.home-email{overflow-wrap:anywhere}.home-social-links{display:flex;flex-wrap:wrap;gap:18px}.home-social-links a{align-items:center;color:var(--home-muted);display:inline-flex;font-size:var(--type-meta);gap:4px;min-height:44px}.home-social-links a:hover{color:var(--home-accent)}.home-social-links svg{height:12px;width:12px}.App--portfolio .footer{margin-top:36px;padding:28px 0}.App--portfolio .footer-text{color:var(--home-muted);font-size:var(--type-meta);text-align:left}@media (max-width:1000px){.home-hero{min-height:560px;padding:70px 0 64px}}@media (max-width:820px){.home-about{gap:24px;grid-template-columns:minmax(0,1fr)}.home-hero{gap:8px;grid-template-columns:1fr;padding:64px 0 40px}.home h1{font-size:clamp(38px,7.5vw,60px)}.home-intro{max-width:490px}.home-section{padding:48px 0;scroll-margin-top:100px}.home-section-heading{align-items:flex-start;flex-wrap:wrap;gap:16px}.home-section-heading>p{max-width:none}.home-article-grid{gap:24px;grid-template-columns:1fr}.home-project-copy{padding:0}.home-project h3{font-size:30px}.home-article>a{padding-right:0}.home-contact{align-items:flex-start;flex-direction:column;gap:32px}}@media (max-width:380px){.home h1{font-size:35px}.home-button{gap:12px;padding:12px 16px}}@media (max-width:600px){.home-project{gap:12px;grid-template-columns:minmax(0,1fr)}.home-project:nth-child(2n) .home-project-art{order:0}.home-project-art{height:auto;min-height:210px}.home-project-grid{gap:56px;margin-top:24px}}@media (prefers-reduced-motion:reduce){.home *,.home :after,.home :before{animation:none;transition:none}.home-article a:hover svg,.home-button:hover{transform:none}}.page-intro{padding:100px 0 64px}.page-lead{font-size:var(--type-lead)}.page-lead,.page-prose{color:var(--home-muted);font-weight:var(--weight-body);line-height:var(--leading-body);max-width:760px}.page-prose{font-size:var(--type-body)}.page-intro .page-prose,.page-prose p+p{margin-top:20px}.page-intro .home-button,.page-intro .home-text-link{margin-top:28px}.page-section{padding:40px 0;scroll-margin-top:120px}.about-introduction{grid-gap:72px;align-items:start;display:grid;gap:72px;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.engineering-focus{margin-top:136px;padding:28px 0}.portfolio-page .engineering-focus h2{font-size:28px}.focus-areas{grid-gap:24px;display:grid;gap:24px;margin-bottom:36px}.focus-areas dt{font-size:var(--type-body);font-weight:var(--weight-label);margin-bottom:6px}.focus-areas dd{color:var(--home-muted);font-size:var(--type-small);font-weight:var(--weight-body);line-height:var(--leading-body)}.portfolio-page h2{font-size:var(--type-section);letter-spacing:var(--tracking-heading);line-height:1.25;margin-bottom:32px}.portfolio-page h3{font-size:var(--type-title);letter-spacing:var(--tracking-title);margin-bottom:12px}.company-context{color:var(--home-muted);font-size:var(--type-ui);font-weight:var(--weight-body)}.experience-company+.experience-company{margin-top:48px}.experience-company:not(.experience-company--siemens),.experience-layout{grid-gap:var(--space-6);display:grid;gap:var(--space-6);grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}.experience-company:not(.experience-company--siemens) .career-timeline{margin-top:0}.experience-context .content-note{margin-bottom:24px;margin-top:20px}.experience-context .page-prose{font-size:var(--type-body)}.career-timeline{border-left:1px solid var(--home-line);list-style:none;margin:24px 0 0 5px;padding-left:26px}.career-timeline li{padding-bottom:28px;position:relative}.career-timeline li:last-child{padding-bottom:0}.career-timeline li:before{background:var(--home-accent);border-radius:50%;content:"";height:9px;left:-31px;position:absolute;top:8px;width:9px}.career-timeline h4{font-size:17px;font-weight:var(--weight-label)}.career-dates{color:var(--home-muted);font-size:var(--type-ui);line-height:1.7;margin:8px 0 12px}.content-note{color:var(--home-muted);font-size:var(--type-meta);line-height:var(--leading-body);margin:24px 0;max-width:760px}.background-grid,.skill-groups{grid-gap:36px;display:grid;gap:36px;grid-template-columns:repeat(3,minmax(0,1fr))}.about-page .background-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.uses-description{margin:16px 0 36px;max-width:700px}.uses-grid{grid-column-gap:clamp(24px,5vw,64px);grid-row-gap:36px;column-gap:clamp(24px,5vw,64px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));row-gap:36px}.uses-group{border-top:1px solid var(--color-border);min-width:0;padding-top:16px}.uses-group h3{font-size:var(--type-ui);font-weight:var(--weight-label);margin-bottom:12px}.uses-group ul{grid-gap:7px;display:grid;gap:7px;list-style:none}.uses-group a,.uses-group li{color:var(--home-muted);font-size:var(--type-small);line-height:1.65}.uses-group a{text-decoration-color:#0000;text-underline-offset:4px;transition:color .18s ease,text-decoration-color .18s ease}.uses-group a:hover{color:var(--home-accent);text-decoration:underline;text-decoration-color:initial}.profile-skills{color:var(--home-muted);display:flex;flex-wrap:wrap;font-size:var(--type-small);gap:8px 16px;line-height:var(--leading-body);list-style:none;padding:0}.professional-strengths{margin-top:40px}.writing-feed{padding-bottom:40px;width:100%}.writing-page .page-intro{grid-gap:0 64px;display:grid;gap:0 64px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.writing-page .page-intro>.home-eyebrow,.writing-page .page-intro>h1{grid-column:1/-1}.writing-page .page-intro .home-text-link{align-self:start;justify-self:end;margin-top:0}.writing-article{border:1px solid var(--home-line);border-radius:var(--radius-surface);padding:24px}.writing-article+.writing-article{margin-top:16px}.writing-article time{color:var(--home-muted);display:block;font-size:var(--type-meta);line-height:var(--leading-body);margin-bottom:10px}.writing-article h2{font-size:clamp(24px,3vw,34px);letter-spacing:var(--tracking-title);line-height:1.25;margin-bottom:16px;max-width:none;overflow-wrap:anywhere}.writing-article h2 a:hover{color:var(--home-accent)}.writing-article .page-prose{max-width:none}.writing-article .home-text-link{background:var(--surface-solid);border:1px solid var(--home-line);border-radius:var(--radius-control);color:var(--home-accent);margin-top:16px;padding:8px 14px;transition:background-color .2s ease,color .2s ease}.writing-article .home-text-link:focus-visible,.writing-article .home-text-link:hover{background:color-mix(in srgb,var(--home-accent) 20%,var(--surface-solid));color:var(--home-ink)}.feed-fallback{color:var(--home-accent);text-decoration:underline;text-underline-offset:4px}.contact-page{flex:1 1}.contact-page .page-intro{grid-gap:12px;display:grid;gap:12px;grid-template-columns:minmax(0,1fr);justify-items:start}.contact-page .page-lead{font-size:19px}.contact-page h1{margin:8px 0 0}.contact-email{align-items:center;color:var(--home-ink);display:inline-flex;flex-wrap:wrap;font-size:clamp(17px,2vw,23px);font-weight:var(--weight-label);gap:12px;margin-top:0;max-width:100%;overflow-wrap:anywhere;padding:12px 0}.contact-options{grid-gap:var(--space-6);display:grid;gap:var(--space-6);grid-template-columns:repeat(2,minmax(0,1fr));padding:24px 0 64px}.contact-options h2{font-size:26px;margin-bottom:16px}.contact-socials{display:flex;flex-wrap:wrap;gap:8px 24px;list-style:none;padding:0}.contact-socials a{align-items:center;color:var(--home-muted);display:inline-flex;gap:8px;min-height:44px}.contact-email:hover,.contact-socials a:hover{color:var(--home-accent);text-decoration:underline;text-underline-offset:5px}.contact-options .home-button{margin-top:20px}@media (max-width:820px){.about-introduction,.contact-page .page-intro,.experience-company:not(.experience-company--siemens),.experience-layout,.writing-page .page-intro{gap:24px;grid-template-columns:minmax(0,1fr)}.engineering-focus{margin-top:0;padding:0 0 32px}.experience-context .content-note{margin-top:0}.contact-page .page-intro{gap:12px}.contact-page h1{margin:0}.writing-page .page-intro .home-text-link{justify-self:start}.page-intro{padding:64px 0 40px}.page-section{padding:32px 0}.background-grid,.skill-groups,.uses-grid{gap:28px;grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.about-page .background-grid,.background-grid,.contact-options,.skill-groups,.uses-grid{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.uses-group a{transition:none}}.work-intro{padding:100px 0 64px}.home-project--copilot{--project-tone:color-mix(in srgb,#8b80b6 65%,var(--color-text))}.home-project--orel{--project-tone:color-mix(in srgb,#b27b87 65%,var(--color-text))}.home-project--adflyn{--project-tone:color-mix(in srgb,#709b99 65%,var(--color-text))}.work-case-details .work-project-note{font-size:var(--type-meta);margin-top:16px}.work-intro .home-intro{max-width:none}.work-index{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:32px}.work-index a{align-items:center;color:var(--home-accent);display:inline-flex;font-size:var(--type-ui);font-weight:var(--weight-label);gap:12px;min-height:44px}.work-case .home-text-link:hover,.work-index a:hover{text-decoration:underline;text-underline-offset:5px}.work-cases{grid-gap:112px;display:grid;gap:112px;padding:24px 0 64px}.work-case{grid-gap:40px;align-items:start;display:grid;gap:40px;scroll-margin-top:120px}.work-case-heading{grid-column-gap:64px;align-items:center;column-gap:64px;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.work-case-heading>.home-project-category,.work-case-heading>.home-text-link,.work-case-heading>.work-project-affiliation,.work-case-heading>h2{grid-column:1}.work-case h2{font-size:clamp(36px,4.5vw,60px);letter-spacing:var(--tracking-heading);line-height:var(--leading-heading);margin:16px 0}.work-case .work-project-affiliation{border:1px solid var(--color-border);border-radius:6px;color:var(--home-muted);font-size:var(--type-meta);font-weight:var(--weight-label);justify-self:start;line-height:1.6;padding:5px 12px;transition:color .2s ease,background-color .2s ease,border-color .2s ease}.work-case .work-project-affiliation:hover{background-color:var(--interaction-glow);border-color:var(--home-accent);color:var(--home-accent)}@media (prefers-reduced-motion:reduce){.work-case .work-project-affiliation{transition:none}}.work-case .home-project-art{background:#0000;border-radius:0;grid-column:2;grid-row:1/5;height:220px;overflow:visible}.work-case .home-project-number{font-size:var(--type-meta);left:auto;letter-spacing:.12em;right:0;top:0}.work-case .home-text-link{margin-top:20px}.work-case-details{grid-gap:32px 64px;display:grid;gap:32px 64px;grid-template-columns:repeat(2,minmax(0,1fr))}.work-case-details section{min-width:0}.work-case-details section:nth-child(3){grid-column:2;grid-row:1/3}.work-case-details section:last-child{grid-column:1/-1}.work-case-details section:nth-child(3):last-child{grid-column:2;grid-row:1/3}.work-case h3{font-size:17px;letter-spacing:var(--tracking-title);margin-bottom:10px}.work-case-details p,.work-contributions{color:var(--home-muted);font-size:var(--type-body);font-weight:var(--weight-body);line-height:var(--leading-body)}.work-contributions{padding-left:20px}.work-contributions li+li{margin-top:8px}.work-case .home-project-tags li{border:0;font-size:var(--type-meta);letter-spacing:.02em;padding:0}.work-case .home-project-tags{gap:12px 24px}@media (max-width:820px){.work-intro{padding:64px 0 40px}.work-case{gap:32px}.work-case-heading{column-gap:24px}.work-case-details{gap:28px}.work-cases{gap:72px;padding-bottom:32px}}@media (max-width:560px){.work-case-details,.work-case-heading{grid-template-columns:minmax(0,1fr)}.work-case .home-project-art{grid-column:1;grid-row:auto;height:190px;margin-top:16px}.work-case-details section:last-child,.work-case-details section:nth-child(3),.work-case-details section:nth-child(3):last-child{grid-column:auto;grid-row:auto}}
/*# sourceMappingURL=main.335a016a.css.map*/