@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.00az9qtie3ho1.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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.3j-a226dh71aj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.2gwoz23eiro2t.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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.0i3h3th1vs4m7.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0zr6hhvz-h9nw.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:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_f880305f-module__AJLRcW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_f880305f-module__AJLRcW__variable{--font-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/fc0a7394b875fa43-s.3zvkfbs08rnj_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/7ebf22b5a21034f8-s.p.3strvg7o-g5v2.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:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ccf27e5a7366fb23-s.1wwzpfhzaj2r0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e41d5df559864f9e-s.p.2rlzm4mj5kw8e.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:Instrument Serif Fallback;src:local(Times New Roman);ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.0%;size-adjust:83.94%}.instrument_serif_115e7596-module__CKpAPW__className{font-family:Instrument Serif,Instrument Serif Fallback;font-weight:400}.instrument_serif_115e7596-module__CKpAPW__variable{--font-display:"Instrument Serif", "Instrument Serif Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-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/59b15b4bcd7b1eb5-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/e532fa1b9921e1cd-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/2fe89d53234c61d4-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-20C0,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/99e609270109b47d-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/5e05ae5b48faa55e-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/a7afbb44bec2bb18-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/02263ebadd758ea4-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/68757d6cddeff913-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-20C0,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/effe91970fc4db64-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%}.ibm_plex_mono_cbb339f3-module__Cm0rrG__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_cbb339f3-module__Cm0rrG__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--paper:#f3f0e8;--paper-raised:#f8f5ed;--ink:#111;--ink-soft:#3f3d38;--ink-muted:#68655e;--blue:#1455d9;--blue-dark:#0f43ae;--rule:#cbc6ba;--rule-strong:#918c82;--visual-field:#e9e5db;--frame:min(100% - 128px, 1312px);--section-space:clamp(4.75rem, 7vw, 7rem);--ease-out:cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans), Arial, sans-serif;margin:0;font-size:17px;line-height:1.55}a{color:inherit;text-underline-offset:.28em;text-decoration-thickness:1px}a:hover{color:var(--blue)}::selection{color:var(--paper);background:var(--blue)}:focus-visible{outline:2px solid var(--blue);outline-offset:5px}svg{max-width:100%;display:block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:20;background:var(--ink);color:var(--paper);padding:10px 16px;position:fixed;top:12px;left:12px;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header,.site-footer,.section-frame{width:var(--frame);margin-inline:auto}.site-header>*,.hero>*,.project>*,.experience-list li>*,.approach-grid>*{min-width:0}.site-header{border-bottom:1px solid var(--ink);height:76px;font:500 12px/1 var(--font-mono), monospace;letter-spacing:.04em;text-transform:uppercase;grid-template-columns:repeat(12,1fr);align-items:center;gap:24px;display:grid}.wordmark{font-family:var(--font-sans);letter-spacing:-.04em;grid-column:1/3;font-size:17px;font-weight:650;text-decoration:none}.wordmark span{color:var(--blue);margin-inline:2px}.desktop-navigation{grid-column:4/10;gap:clamp(22px,3vw,48px);display:flex}.site-header nav a,.header-actions a{text-decoration:none}.header-actions{white-space:nowrap;grid-column:10/13;justify-content:flex-end;gap:clamp(16px,2vw,28px);display:flex}.mobile-navigation{display:none}.portfolio-main{--datum-x:-44px;isolation:isolate;position:relative}.portfolio-structure{z-index:-1;width:var(--frame);pointer-events:none;margin-inline:auto;position:absolute;inset:0}.portfolio-structure:before{content:"";top:0;bottom:0;left:var(--datum-x);background:color-mix(in srgb, var(--rule) 62%, transparent);width:1px;position:absolute}.portfolio-structure span{width:max-content;margin-left:calc(var(--datum-x) + 12px);color:color-mix(in srgb, var(--ink-muted) 72%, transparent);font:500 10px/1 var(--font-mono), monospace;letter-spacing:.05em;writing-mode:vertical-rl;padding:4px 0;display:block;position:sticky;top:92px}.section-frame{border-bottom:1px solid var(--ink);padding-block:var(--section-space);position:relative}.section-frame[data-folio]:before{content:"";z-index:-1;top:-4px;left:calc(var(--datum-x) - 4px);border:1px solid var(--ink);background:var(--paper);border-radius:50%;width:9px;height:9px;position:absolute}.section-frame[data-folio]:after{content:attr(data-folio);z-index:-1;color:#11111107;font:400 clamp(12rem, 24vw, 24rem)/.7 var(--font-display), Georgia, serif;letter-spacing:-.08em;pointer-events:none;position:absolute;bottom:-.06em;right:-.035em}.section-frame[data-folio]:nth-of-type(2n):before{background:var(--blue);border-color:var(--blue)}.registration-mark{width:21px;height:21px;color:var(--ink);opacity:.82;position:absolute;top:26px}.registration-mark:before,.registration-mark:after{content:"";background:currentColor;position:absolute}.registration-mark:before{width:1px;height:21px;top:0;left:10px}.registration-mark:after{width:21px;height:1px;top:10px;left:0}.registration-mark-left{left:0;transform:translate(-50%)}.registration-mark-right{right:0;transform:translate(50%)}.registration-mark-blue{color:var(--blue);background:radial-gradient(circle at center, var(--blue) 0 2px, var(--paper) 2px 4px, var(--blue) 4px 5px, transparent 5px)}.hero{grid-template-rows:1fr auto;grid-template-columns:repeat(12,1fr);column-gap:24px;min-height:calc(100svh - 76px);padding-top:clamp(64px,7vw,108px);display:grid}.hero-copy{grid-column:1/8;align-self:start}.eyebrow,.project-index,.profile-index,.content-note{font:500 12px/1.4 var(--font-mono), monospace;letter-spacing:.06em;text-transform:uppercase;margin:0}.hero h1{max-width:920px;font:400 clamp(4.5rem, 7.15vw, 6.5rem)/.94 var(--font-display), Georgia, serif;letter-spacing:-.045em;text-wrap:balance;margin:clamp(28px,4vw,60px) 0 48px}.hero h1 em,.approach h2 em,.contact h2 em{color:var(--blue);font-weight:400}.hero-deck{border-top:1px solid var(--rule-strong);grid-template-columns:1fr 1fr;gap:24px;padding-top:20px;display:grid}.hero-deck>p{max-width:470px;margin:0;font-size:20px;line-height:1.45}.hero-deck dl{font:500 11px/1.45 var(--font-mono), monospace;grid-template-columns:1fr 1fr;gap:16px;margin:0;display:grid}.hero-deck dl div{border-left:1px solid var(--rule);padding-left:12px}.hero-deck dt{color:var(--ink-muted)}.hero-deck dd{margin:6px 0 0}.hero-visual{grid-column:8/13;align-self:center;padding-left:10px}.hero-diagram{margin:0}.hero-diagram svg{width:100%;height:auto}.hero-diagram-mobile{display:none}.diagram-grid line,.figure-grid line{stroke:var(--rule);stroke-width:.75px}.diagram-paths path{stroke:var(--ink);stroke-width:1.4px;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1px;animation:draw .9s var(--ease-out) .16s forwards}.diagram-paths .accent-path,.accent-path{stroke:var(--blue);stroke-width:2.2px;animation-delay:.34s}.diagram-nodes,.diagram-labels{opacity:0;animation:.3s ease-out .95s forwards appear}.diagram-nodes circle{fill:var(--paper);stroke:var(--ink);stroke-width:1.5px}.diagram-nodes .accent-node{fill:var(--blue);stroke:var(--blue)}.diagram-labels,.axis-labels,.figure-legend,.figure-kicker,.loop-labels{font:500 11px var(--font-mono), monospace;letter-spacing:.04em;fill:var(--ink)}.accent-text{fill:var(--blue)!important}.hero-diagram figcaption,.project-figure figcaption,.systems-loop figcaption{border-top:1px solid var(--ink);font:500 11px/1.3 var(--font-mono), monospace;letter-spacing:.05em;justify-content:space-between;padding-top:12px;display:flex}.scroll-cue{border-top:1px solid var(--rule);font:500 11px var(--font-mono), monospace;grid-column:1/13;justify-content:space-between;align-self:end;margin-top:70px;padding-top:16px;text-decoration:none;display:flex}.section-label{font-family:var(--font-mono), monospace;grid-template-columns:repeat(12,1fr);gap:24px;margin-bottom:clamp(44px,5vw,72px);display:grid}.section-label span{grid-column:1/3;font-size:12px}.section-label h2{font:500 13px/1 var(--font-mono), monospace;letter-spacing:.05em;text-transform:uppercase;grid-column:3/7;margin:0}.section-intro{width:calc(58.3333% - 10px);max-width:800px;font:400 clamp(2.25rem, 3.5vw, 3.25rem)/1.08 var(--font-display), Georgia, serif;letter-spacing:-.025em;margin:0 0 clamp(52px,6vw,84px) calc(16.6667% + 4px)}.project-jump-index{border-block:1px solid var(--ink);font:500 11px/1.4 var(--font-mono), monospace;letter-spacing:.04em;grid-template-columns:2fr 10fr;gap:24px;margin:0 0 clamp(56px,7vw,92px);padding-block:14px;display:grid}.project-jump-index>span{color:var(--ink-muted)}.project-jump-index ol{grid-template-columns:repeat(4,1fr);gap:24px;margin:0;padding:0;list-style:none;display:grid}.project-jump-index a{gap:12px;text-decoration:none;display:flex}.project-jump-index a span,.project-jump-index a:hover,.project-jump-index a:focus-visible{color:var(--blue)}.project-list{gap:clamp(68px,7vw,104px);display:grid}.project{border-top:1px solid var(--ink);grid-template-columns:repeat(12,1fr);gap:24px;padding-top:22px;scroll-margin-top:92px;display:grid}.project-portfolio{--blue:#245fbe}.project-markets{--blue:#285a46}.project-poker{--blue:#b65326}.project-audio{--blue:#1455d9}.project-header{grid-column:1/7}.project-index{color:var(--blue);margin-bottom:46px}.project h3{max-width:780px;font:400 clamp(3rem, 5vw, 4.5rem)/.98 var(--font-display), Georgia, serif;letter-spacing:-.035em;text-wrap:balance;margin:0}.project-summary{max-width:570px;color:var(--ink-soft);margin:32px 0 0;font-size:18px;line-height:1.55}.project-evidence{background:var(--rule);border:1px solid var(--rule);max-width:570px;font:500 12px/1.45 var(--font-mono), monospace;grid-template-columns:1fr 1fr;gap:1px;margin:28px 0 0;display:grid}.project-evidence div{background:var(--paper-raised);padding:11px 12px}.project-evidence div:last-child{grid-column:1/3}.project-evidence div:nth-child(2):last-child{grid-column:auto}.project-evidence dt{color:var(--ink-muted);margin-bottom:5px}.project-evidence dd{margin:0}.project-meta{border-top:1px solid var(--rule-strong);font:500 12px/1.4 var(--font-mono), monospace;grid-column:9/13;align-self:end;margin:0}.project-meta div{border-bottom:1px solid var(--rule);grid-template-columns:90px 1fr;padding-block:10px;display:grid}.project-meta dt{color:var(--ink-muted)}.project-meta div:first-child dt{color:var(--blue)}.project-meta dd{margin:0}.project-figure{background:var(--visual-field);border:1px solid var(--rule-strong);grid-column:1/13;margin:48px 0 0;position:relative;overflow:hidden}.project-svg{aspect-ratio:840/520;width:100%;padding:clamp(12px,2vw,24px)}.project-screenshot{width:100%;height:auto;display:block}.portfolio-staging-screenshot{background:#0d1117}.project-marginalia{pointer-events:none;margin:0;padding:0;list-style:none;position:absolute;inset:0}.project-marginalia li{background:color-mix(in srgb, var(--paper-raised) 94%, transparent);border-left:1px solid var(--blue);width:min(22%,250px);box-shadow:0 0 0 1px color-mix(in srgb, var(--rule) 55%, transparent);padding:11px 13px;position:absolute}.project-marginalia li:first-child{top:11%;right:4%}.project-marginalia li:last-child{bottom:15%;left:4%}.project-marginalia span{color:var(--blue);font:500 11px/1.2 var(--font-mono), monospace;letter-spacing:.04em}.project-marginalia p{color:var(--ink-soft);margin:6px 0 0;font-size:13px;line-height:1.45}.project-audio .project-marginalia,.project-poker .project-marginalia,.project-markets .project-marginalia{border-top:1px solid var(--rule);background:var(--rule);pointer-events:auto;grid-template-columns:1fr 1fr;gap:1px;display:grid;position:relative;inset:auto}.project-audio .project-marginalia li,.project-poker .project-marginalia li,.project-markets .project-marginalia li{width:auto;min-height:100px;box-shadow:none;background:var(--paper-raised);border:0;padding:13px;position:static}.project-figure figcaption{gap:24px;margin:0 18px;padding-bottom:12px;font-size:11px}.project-figure figcaption span:last-child{color:var(--ink-muted);text-align:right}.project-gallery{border-block:1px solid var(--ink);background:var(--paper-raised);grid-column:1/13}.project-gallery summary{cursor:pointer;justify-content:space-between;align-items:center;gap:24px;padding:18px 20px;list-style:none;display:flex}.project-gallery summary::-webkit-details-marker{display:none}.project-gallery summary:hover,.project-gallery summary:focus-visible{color:var(--blue)}.project-gallery-heading,.project-gallery-action{gap:18px;display:flex}.project-gallery-heading{align-items:baseline}.project-gallery-action{align-items:center}.project-gallery-heading strong{font-size:17px;font-weight:600}.project-gallery summary small{color:var(--ink-muted);font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.04em;text-transform:uppercase}.project-gallery-action>span{border:1px solid;border-radius:50%;place-items:center;width:30px;height:30px;font-size:21px;line-height:1;transition:transform .18s ease-out,background .18s ease-out,color .18s ease-out;display:grid}.project-gallery summary:hover .project-gallery-action>span,.project-gallery summary:focus-visible .project-gallery-action>span{color:var(--paper);background:var(--blue)}.project-gallery[open] .project-gallery-action>span{transform:rotate(45deg)}.project-gallery[open] .project-gallery-action small{visibility:hidden}.project-gallery-grid{background:var(--rule);grid-template-columns:1fr 1fr;gap:1px;padding-top:1px;display:grid}.project-gallery-grid figure{background:var(--paper-raised);margin:0;padding:12px}.project-gallery-grid img{border:1px solid var(--rule-strong);width:100%;height:auto;display:block}.project-gallery-grid figcaption{color:var(--ink-muted);font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.05em;padding-top:10px}.project-details{border-bottom:1px solid var(--rule-strong);grid-column:1/9;align-self:start;margin-top:0}.project-details summary{cursor:pointer;height:54px;color:var(--ink-soft);font:500 11px/1.4 var(--font-mono), monospace;letter-spacing:.05em;text-transform:uppercase;justify-content:space-between;align-items:center;padding-block:0;display:flex}.project-details summary::marker{content:""}.project-details summary::-webkit-details-marker{display:none}.project-details summary:hover,.project-details summary:focus-visible{color:var(--blue)}.project-details summary span:last-child{font-size:18px;line-height:.8;transition:transform .18s ease-out}.project-details[open] summary span:last-child{transform:rotate(45deg)}.project-details-content{padding-bottom:18px}.project-details .project-marginalia{background:var(--rule);pointer-events:auto;grid-template-columns:1fr 1fr;gap:1px;margin:0;padding:0;list-style:none;display:grid;position:static}.project-details .project-marginalia li{width:auto;min-height:0;box-shadow:none;background:var(--paper-raised);border:0;padding:15px;position:static}.project-details .pitch-architecture{border:1px solid var(--rule-strong);background:var(--visual-field);margin-top:18px}.project-portfolio .project-details{grid-column:1/13}.project-optimisations{border-bottom:1px solid var(--rule-strong);grid-column:1/13;align-self:start;margin:0}.project-optimisations summary{cursor:pointer;height:54px;color:var(--ink-soft);justify-content:space-between;align-items:center;gap:18px;padding-block:0;display:flex}.project-optimisations summary::marker{content:""}.project-optimisations summary::-webkit-details-marker{display:none}.project-optimisations summary>span:first-child{align-items:baseline;gap:14px;display:flex}.project-optimisations summary strong{color:var(--ink);font-size:14px;font-weight:600}.project-optimisations summary small,.project-optimisations li>span{color:var(--ink-muted);font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.05em;text-transform:uppercase}.project-optimisations summary>span:last-child{font-size:18px;line-height:.8;transition:transform .18s ease-out}.project-optimisations summary:hover,.project-optimisations summary:focus-visible,.project-optimisations summary:hover strong,.project-optimisations summary:focus-visible strong{color:var(--blue)}.project-optimisations[open] summary>span:last-child{transform:rotate(45deg)}.project-optimisations ol{background:var(--rule);grid-template-columns:1fr 1fr;gap:1px;margin:0 0 18px;padding:1px;list-style:none;display:grid}.project-optimisations li{background:var(--paper-raised);padding:15px}.project-optimisations li strong{color:var(--blue);font:500 18px/1.2 var(--font-mono), monospace;letter-spacing:-.04em;margin-top:10px;display:block}.project-optimisations li p{color:var(--ink-muted);margin:7px 0 0;font-size:12px;line-height:1.5}.project-optimisations code{font:inherit}.project-technical-visual{border:1px solid var(--rule-strong);background:var(--visual-field);margin-top:18px}.pitch-architecture-mobile{display:none}.project-links{grid-column:10/13;align-self:start;gap:24px;display:grid}.project-link,.project-showcase-link{border-bottom:1px solid var(--ink);justify-content:space-between;padding-block:16px;font-size:15px;text-decoration:none;display:flex}.project-link:hover,.project-link:focus-visible,.project-showcase-link:hover,.project-showcase-link:focus-visible{color:var(--blue);border-color:var(--blue)}.link-arrow{transition:transform .18s ease-out;display:inline-block}a:hover .link-arrow,a:focus-visible .link-arrow{transform:translate(4px,-4px)}.project-future{color:var(--paper);background:#111722;grid-column:1/13;grid-template-columns:repeat(12,1fr);gap:24px;margin-top:38px;padding:clamp(28px,4vw,52px);display:grid}.project-future-heading{grid-column:1/6}.project-future-heading>p{color:#8eafff;font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.06em;margin:0 0 42px}.project-future h4{font:400 clamp(2.4rem, 4vw, 3.8rem)/1 var(--font-display), Georgia, serif;letter-spacing:-.03em;margin:0}.project-future ol{border-top:1px solid #59606c;grid-column:7/13;margin:0;padding:0;list-style:none}.project-future li{border-bottom:1px solid #353d49;grid-template-columns:38px 1fr;gap:14px;padding-block:18px;display:grid}.project-future li>span{color:#8eafff;font:500 10px var(--font-mono), monospace}.project-future h5{margin:0;font-size:16px}.project-future li p{color:#b9c0cc;margin:5px 0 0;font-size:13px;line-height:1.5}.project-future-mobile-more{display:none!important}.chart-secondary,.chart-primary,.poker-orbit,.spectral-line,.pipeline-arrow{fill:none;vector-effect:non-scaling-stroke}.chart-secondary{stroke:var(--rule-strong);stroke-width:1.5px}.chart-primary{stroke:var(--blue);stroke-width:2.5px}.chart-markers{opacity:1;font:500 10px var(--font-mono), monospace;fill:var(--ink)}.chart-markers circle{fill:var(--blue)}.chart-markers line{stroke:var(--blue);stroke-width:1px;stroke-dasharray:3 4}.mini-bars rect{fill:var(--rule-strong);opacity:.5}.research-pipeline{font:500 10px var(--font-mono), monospace;fill:var(--ink)}.research-pipeline path{fill:none;stroke:var(--ink);stroke-width:1px;vector-effect:non-scaling-stroke}.figure-legend circle{fill:var(--blue)}.figure-legend .muted-dot{fill:var(--rule-strong)}.poker-table{fill:var(--paper-raised);stroke:var(--rule-strong)}.poker-orbit{stroke:var(--rule);stroke-width:1px;stroke-dasharray:1;stroke-dashoffset:0}.community-cards rect{fill:var(--paper);stroke:var(--ink)}.community-cards text,.pot-label,.poker-seats,.equity-rail,.action-rail,.architecture-note{font:500 10px var(--font-mono), monospace;fill:var(--ink)}.poker-seats circle{fill:var(--visual-field);stroke:var(--ink)}.poker-seats .active-seat{fill:var(--blue);stroke:var(--blue)}.poker-seats g:nth-child(3)>text:first-of-type{fill:var(--paper)}.equity-rail rect{fill:var(--rule)}.equity-rail .equity-fill{fill:var(--blue)}.architecture-note line{stroke:var(--ink)}.waveform line{stroke:var(--ink);stroke-width:2px}.wave-axis{stroke:var(--rule-strong)}.spectral-line{stroke:var(--paper);stroke-width:1px;opacity:.52}.pipeline-arrow{stroke:var(--ink);stroke-width:1px;stroke-dasharray:1;stroke-dashoffset:0}.architecture-flow,.skip-connections,.conditioning-rail{font:500 10px var(--font-mono), monospace;fill:var(--ink);letter-spacing:.02em}.architecture-flow path,.skip-connections path,.conditioning-rail path{fill:none;vector-effect:non-scaling-stroke}.architecture-flow path{stroke:var(--ink);stroke-width:1.25px}.architecture-flow rect{fill:var(--paper-raised);stroke:var(--ink);vector-effect:non-scaling-stroke}.architecture-flow .bottleneck-block{fill:color-mix(in srgb, var(--blue) 13%, var(--paper-raised));stroke:var(--blue)}.architecture-flow .block-number{fill:var(--blue);font-size:10px}.skip-connections path{stroke:var(--blue);stroke-width:1.35px}.skip-connections circle,.skip-connections text{fill:var(--blue)}.conditioning-rail path{stroke:var(--rule-strong);stroke-width:1px;stroke-dasharray:3 4}.conditioning-rail circle{fill:var(--paper);stroke:var(--ink)}.mobile-architecture-flow,.mobile-gated-skip,.mobile-conditioning{font:500 11px var(--font-mono), monospace;fill:var(--ink);letter-spacing:.03em}.mobile-architecture-flow path,.mobile-gated-skip path,.mobile-conditioning path{fill:none;stroke:var(--ink);stroke-width:1.25px;vector-effect:non-scaling-stroke}.mobile-architecture-flow marker path{fill:var(--ink);stroke:none}.mobile-architecture-flow rect{fill:var(--paper-raised);stroke:var(--ink);vector-effect:non-scaling-stroke}.mobile-architecture-flow text{text-anchor:middle}.mobile-architecture-flow .mobile-attention rect{fill:color-mix(in srgb, var(--blue) 13%, var(--paper-raised));stroke:var(--blue)}.mobile-gated-skip path,.mobile-gated-skip circle{stroke:var(--blue)}.mobile-gated-skip circle{fill:var(--blue)}.mobile-gated-skip text{fill:var(--blue);font-size:11px}.mobile-conditioning path{stroke:var(--rule-strong);stroke-dasharray:3 4}.mobile-conditioning text{font-size:11px}.portfolio-service-flow,.portfolio-contracts,.portfolio-data-plane,.portfolio-platform{font:500 10px var(--font-mono), monospace;fill:var(--ink);letter-spacing:.03em}.portfolio-service-flow rect,.portfolio-data-plane rect{fill:var(--paper-raised);stroke:var(--ink);vector-effect:non-scaling-stroke}.portfolio-service-flow path,.portfolio-data-plane path{fill:none;stroke:var(--ink);stroke-width:1.2px;vector-effect:non-scaling-stroke}.portfolio-service-flow .service-sub,.portfolio-contracts{fill:var(--blue);font-size:10px}.portfolio-data-plane rect{stroke:var(--rule-strong)}.portfolio-data-plane text:nth-of-type(2n),.portfolio-platform{fill:var(--ink-muted);font-size:10px}.experience-list{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.experience{padding-block:clamp(56px,4.5vw,72px)}.experience .section-label{margin-bottom:clamp(32px,3vw,44px)}.experience-list li{border-bottom:1px solid var(--rule);grid-template-columns:repeat(12,1fr);gap:24px;padding-block:28px 34px;display:grid}.experience-number,.experience-list time{font:500 11px/1.4 var(--font-mono), monospace}.experience-number{color:var(--blue);grid-column:1/2}.experience-list time{grid-column:2/4}.experience-list li>div{grid-column:4/8}.experience-list h3{margin:0 0 4px;font-size:20px;font-weight:550}.experience-list li>div p{color:var(--ink-muted);margin:0}.experience-impact{color:var(--ink-soft);grid-column:9/13;margin:0;font-size:15px}.racing-feature{color:#eaf2ff;background:#082d63;grid-template-columns:repeat(12,1fr);gap:24px;margin-top:clamp(64px,8vw,112px);padding:clamp(32px,5vw,64px);display:grid;overflow:hidden}.racing-feature-copy{grid-column:1/6;align-self:start}.racing-feature-copy .eyebrow{color:#85bcff}.racing-feature h3{font:400 clamp(2.7rem, 4.3vw, 4.3rem)/.96 var(--font-display), Georgia, serif;letter-spacing:-.035em;margin:38px 0 28px}.racing-feature-copy>p:not(.eyebrow){color:#bfd5ee;margin:0 0 18px;font-size:16px;line-height:1.6}.racing-feature-visual{background:#073674;border:1px solid #b0d3ff80;grid-column:6/13;margin:0}.racing-blueprint{width:100%;height:auto;display:block}.racing-feature-visual figcaption{color:#9fcaff;font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.05em;border-top:1px solid #b0d3ff66;justify-content:space-between;padding:11px 14px;display:flex}.racing-grid line{stroke:#a4cfff17;stroke-width:1px}.racing-kicker,.racing-wheel,.racing-controller,.racing-signals,.racing-constraints{font:500 10px var(--font-mono), monospace;letter-spacing:.04em;fill:#d9eaff}.racing-kicker{fill:#83beff}.racing-wheel path,.racing-wheel circle,.racing-wheel rect,.racing-controller rect{fill:none;stroke:#acd4ff;stroke-width:1.25px;vector-effect:non-scaling-stroke}.racing-wheel>path:first-child{fill:#051b3966;stroke-width:2px}.racing-wheel rect{fill:#031835db}.racing-controller rect{fill:#061f47}.racing-screen-value{fill:#65afff;font-size:18px}.racing-controller text:last-child{fill:#7fc0ff;font-size:10px}.racing-signals path{fill:none;stroke:#75b8ff;stroke-width:1.2px;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}.racing-signals .racing-label-plate{fill:#073674;stroke:#acd4ffb8;stroke-width:1px;vector-effect:non-scaling-stroke}.racing-arrowhead{fill:#75b8ff;stroke:none}.racing-signals text:nth-of-type(2n){fill:#7fbfff;font-size:10px}.racing-constraints{fill:#94c8ff;font-size:10px}.racing-constraints path{stroke:#b0d3ffb3;stroke-width:1px}.racing-lessons{background:#b0d3ff47;grid-column:1/9;grid-template-columns:repeat(3,1fr);gap:1px;margin:28px 0 0;padding:1px;list-style:none;display:grid}.racing-lessons li{background:#082d63;grid-template-columns:26px 1fr;gap:10px;padding:18px;display:grid}.racing-lessons li>span{color:#75b8ff;font:500 10px var(--font-mono), monospace}.racing-lessons strong{font-size:14px}.racing-lessons p{color:#aac7e5;margin:7px 0 0;font-size:12px;line-height:1.5}.racing-feature blockquote{color:#dcecff;font:400 17px/1.5 var(--font-display), Georgia, serif;border-left:2px solid #75b8ff;grid-column:9/13;align-self:end;margin:28px 0 0;padding-left:20px}.content-note{color:var(--ink-muted);max-width:720px;margin:24px 0 0}.education{padding-block:clamp(56px,4.5vw,72px)}.education .section-label{margin-bottom:clamp(32px,3vw,44px)}.education-list{grid-template-columns:1fr 1fr;gap:24px;margin:0;padding:0;list-style:none;display:grid}.education-list li{border-top:1px solid var(--ink);grid-template-columns:42px 118px 1fr;gap:16px;padding-block:18px 22px;display:grid}.education-list li>span,.education-list time{font:500 10px/1.4 var(--font-mono), monospace}.education-list li>span{color:var(--blue)}.education-list h3{margin:0 0 5px;font-size:17px;font-weight:550}.education-list div p,.education-list li>p{color:var(--ink-muted);margin:0;font-size:13px;line-height:1.45}.education-list li>p{grid-column:3}.education-notes{border-top:1px solid var(--rule);grid-template-columns:1fr 1fr;gap:24px;margin-top:28px;padding-top:14px;display:grid}.education-notes p{color:var(--ink-muted);margin:0;font-size:12px;line-height:1.55}.education-notes span{color:var(--ink);font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.05em;margin-bottom:5px;display:block}.profile-grid{border-top:1px solid var(--ink);grid-template-columns:repeat(12,1fr);gap:0 24px;display:grid}.profile{padding-block:clamp(64px,5.5vw,88px)}.profile .section-label{margin-bottom:clamp(38px,4vw,56px)}.profile .section-intro{margin-bottom:clamp(42px,4.5vw,64px)}.profile-group{border-bottom:1px solid var(--rule);grid-column:span 4;min-height:310px;padding:24px 24px 32px 0}.profile-group:not(:nth-child(3n)){border-right:1px solid var(--rule)}.profile-index{color:var(--blue)}.profile-group h3{font:400 28px/1.1 var(--font-display), Georgia, serif;margin:64px 0 22px}.profile-group ul{color:var(--ink-soft);margin:0;padding:0;list-style:none}.profile-group li{border-bottom:1px solid color-mix(in srgb, var(--rule) 62%, transparent);align-items:flex-start;min-height:38px;padding-block:6px;display:flex}.profile-group li:last-child{border-bottom:0}.profile-group li>span{line-height:1.25;display:grid}.profile-group li strong{font-size:13px;font-weight:550}.profile-group li small{color:var(--ink-muted);font:400 10px/1.35 var(--font-mono), monospace;margin-top:2px}.profile-accordion{display:none}.brand-icon{width:16px;height:16px;color:var(--ink);flex:0 0 16px;margin-right:11px}.contact-link-label{align-items:center;display:inline-flex}.contact-link-label .brand-icon{flex-basis:17px;width:17px;height:17px}.now{padding-block:clamp(64px,5.5vw,88px)}.now-heading{grid-template-columns:repeat(12,1fr);align-items:end;gap:24px;margin-bottom:48px;display:grid}.now-heading h2{font:400 clamp(2.8rem, 4.5vw, 4.25rem)/.98 var(--font-display), Georgia, serif;letter-spacing:-.03em;grid-column:3/8;margin:0}.now-heading p{color:var(--ink-muted);grid-column:9/13;margin:0}.now-list{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.now-list li{border-bottom:1px solid var(--rule);grid-template-columns:70px 150px minmax(0,1fr) 30px;align-items:center;gap:24px;padding-block:20px;display:grid}.now-list>li>span,.now-type{font:500 10px/1.3 var(--font-mono), monospace}.now-type{color:var(--blue)}.now-list h3{margin:0;font-size:18px}.now-list p{max-width:680px;color:var(--ink-muted);margin:3px 0 0;font-size:14px}.now-list a,.now-list>li>span:last-child{justify-self:end;text-decoration:none}.approach-grid{grid-template-columns:repeat(12,1fr);gap:24px;display:grid}.approach-copy{grid-column:1/7}.approach-copy>h2{font:400 clamp(3.5rem, 5.5vw, 5rem)/.96 var(--font-display), Georgia, serif;letter-spacing:-.035em;margin:0 0 44px}.approach-copy>p{max-width:590px;color:var(--ink-soft);margin:0 0 64px;font-size:20px}.approach-copy ol{border-top:1px solid var(--ink);margin:0;padding:0;list-style:none}.approach-copy li{border-bottom:1px solid var(--rule);grid-template-columns:48px 1fr;padding-block:18px;display:grid}.approach-copy li>span{font:500 11px var(--font-mono), monospace;color:var(--blue);grid-row:1/3}.approach-copy li strong{font-size:15px}.approach-copy li p{color:var(--ink-muted);margin:4px 0 0;font-size:14px}.approach-visual{grid-column:7/13;align-self:end}.systems-loop{margin:0}.systems-loop svg{width:100%}.loop-paths path{stroke:var(--ink);stroke-width:1.2px;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:0}.loop-nodes circle{fill:var(--paper);stroke:var(--ink)}.crosshair{stroke:var(--rule);stroke-dasharray:3 6}.contact{flex-direction:column;justify-content:center;min-height:82svh;display:flex}.contact h2{font:400 clamp(5rem, 10vw, 9rem)/.86 var(--font-display), Georgia, serif;letter-spacing:-.05em;margin:48px 0}.contact-copy{max-width:600px;color:var(--ink-soft);font-size:20px}.contact-links{grid-template-columns:repeat(4,1fr);gap:24px;margin-top:80px;display:grid}.contact-links a{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);justify-content:space-between;padding-block:18px;text-decoration:none;display:flex}.site-footer{min-height:120px;font:500 10px var(--font-mono), monospace;letter-spacing:.04em;grid-template-columns:1fr 1fr 1fr;align-items:center;gap:24px;display:grid}.site-footer p{margin:0}.site-footer p:nth-child(2){text-align:center}.site-footer a{justify-self:end;text-decoration:none}.resume-page{width:min(100% - 64px,980px);margin-inline:auto;padding-block:56px 96px}.resume-header{border-bottom:2px solid var(--ink);grid-template-columns:1fr auto;gap:48px;padding-bottom:40px;display:grid}.resume-kicker,.resume-status,.resume-row span,.resume-row time{font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.04em;text-transform:uppercase}.resume-header h1{font:400 clamp(3.5rem, 7vw, 5.5rem)/.9 var(--font-display), Georgia, serif;letter-spacing:-.045em;margin:18px 0 8px}.resume-header p{max-width:610px;margin-block:0}.resume-header nav{font:500 11px/1.4 var(--font-mono), monospace;text-align:right;text-transform:uppercase;align-content:start;gap:10px;display:grid}.resume-header nav a,.resume-projects a{text-decoration:none}.resume-section{border-bottom:1px solid var(--ink);grid-template-columns:190px 1fr;gap:40px;padding-block:36px;display:grid}.resume-section>h2{font:500 11px/1.4 var(--font-mono), monospace;letter-spacing:.05em;text-transform:uppercase;margin:0}.resume-projects{grid-template-columns:1fr 1fr;gap:32px 24px;display:grid}.resume-projects article,.resume-entry{border-top:1px solid var(--rule-strong);padding-top:12px}.resume-section>.resume-entry{grid-column:2}.resume-row{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.resume-row h3{margin:0;font-size:17px}.resume-status{color:var(--ink-muted);margin:5px 0 12px}.resume-projects article>p:not(.resume-status){margin:0 0 10px;font-size:13px;line-height:1.5}.resume-projects .resume-evidence{color:var(--ink-muted)}.resume-projects a{font:500 10px/1.4 var(--font-mono), monospace;text-transform:uppercase}.resume-entry+.resume-entry{margin-top:24px}.resume-entry>p:last-child{margin-bottom:0;font-size:14px}.resume-capabilities{grid-template-columns:1fr 1fr;gap:18px 24px;display:grid}.resume-capabilities div{border-top:1px solid var(--rule);padding-top:10px}.resume-capabilities h3{margin:0 0 5px;font-size:14px}.resume-capabilities p{color:var(--ink-muted);margin:0;font-size:12px}@keyframes draw{to{stroke-dashoffset:0}}@keyframes appear{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes reveal-mask{0%{width:0}to{width:740px}}@keyframes plate-enter{0%{opacity:.15;clip-path:inset(0 0 100%);transform:translateY(18px)}to{opacity:1;clip-path:inset(0);transform:none}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.plate-reveal{will-change:clip-path, opacity, transform;animation:linear both plate-enter;animation-timeline:view();animation-range:entry 4% cover 30%}}}@media (max-width:1100px){:root{--frame:min(100% - 64px, 960px)}.portfolio-main{--datum-x:-22px}.site-header,.hero,.section-label,.project,.experience-list li,.profile-grid,.approach-grid{gap:16px}.hero-copy{grid-column:1/8}.hero-visual{grid-column:8/13;padding:0}.hero h1{font-size:clamp(4.2rem,7vw,5.2rem)}.hero-deck{grid-template-columns:1fr}.hero-deck dl{max-width:360px}.project-header{grid-column:1/8}.project-meta{grid-column:9/13}.project-details{grid-column:1/9}.project-links{grid-column:9/13}.profile-group{grid-column:span 6}.profile-group:not(:nth-child(3n)){border-right:0}.profile-group:nth-child(odd){border-right:1px solid var(--rule)}.now-heading{gap:16px}}@media (max-width:800px){:root{--frame:calc(100% - 64px);--section-space:5.5rem}.site-header{grid-template-columns:repeat(8,1fr)}.wordmark{grid-column:1/2}.desktop-navigation{grid-column:2/7;justify-content:center;gap:18px}.header-actions{grid-column:7/9}.hero{grid-template-columns:repeat(8,1fr);min-height:auto}.hero-copy{grid-column:1/9}.hero h1{max-width:700px;font-size:clamp(4.1rem,10vw,5.2rem)}.hero-deck{grid-template-columns:1.25fr 1fr}.hero-visual{grid-column:2/9;margin-top:72px}.scroll-cue{grid-column:1/9}.section-label{grid-template-columns:repeat(8,1fr)}.section-label span{grid-column:1/2}.section-label h2{grid-column:2/6}.section-intro{width:auto;margin-left:calc(12.5% + 2px)}.project-jump-index ol{grid-template-columns:repeat(2,1fr)}.project{grid-template-columns:repeat(8,1fr)}.project-header{grid-column:1/7}.project-meta{grid-column:1/9;grid-template-columns:repeat(3,1fr);margin-top:30px;display:grid}.project-meta div{padding-right:12px;display:block}.project-meta dd{margin-top:5px}.project-figure{grid-column:1/9;margin-top:30px}.project-details,.project-portfolio .project-details,.project-optimisations{grid-column:1/9}.project-links{grid-column:5/9}.project-future,.project-future-heading{grid-column:1/9}.project-future-heading>p{margin-bottom:24px}.project-future h4{max-width:620px}.project-future ol{grid-column:2/9;margin-top:34px}.experience-list li{grid-template-columns:repeat(8,1fr)}.experience-number{grid-column:1}.experience-list time{grid-column:2/4}.experience-list li>div{grid-column:4/9}.experience-impact{grid-column:4/9;margin-top:16px}.racing-feature{grid-template-columns:repeat(8,1fr)}.racing-feature-copy{grid-column:1/5}.racing-feature-visual{grid-column:5/9}.racing-lessons{grid-column:1/9}.racing-feature blockquote{grid-column:2/8}.education-list{grid-template-columns:1fr}.education-list li{grid-template-columns:42px 130px 1fr}.education-list li>p{grid-column:3}.profile-grid{grid-template-columns:repeat(8,1fr)}.profile-group{grid-column:span 4}.now-heading{grid-template-columns:repeat(8,1fr);gap:16px}.now-heading h2{grid-column:2/6}.now-heading p{grid-column:6/9}.approach-grid{grid-template-columns:repeat(8,1fr)}.approach-copy{grid-column:1/9}.approach-visual{grid-column:2/9;margin-top:72px}}@media (max-width:600px){:root{--frame:calc(100% - 40px);--section-space:3.9rem}html,body{max-width:100%}body{font-size:16px}.portfolio-main{--datum-x:-14px}.portfolio-structure span{display:none}.site-header{z-index:10;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;height:66px;position:relative}.wordmark{grid-column:1}.desktop-navigation{display:none}.mobile-navigation{grid-column:2;justify-self:center;display:block;position:static}.mobile-navigation summary{cursor:pointer;align-items:center;gap:8px;list-style:none;display:flex}.mobile-navigation summary::-webkit-details-marker{display:none}.mobile-navigation summary span{color:var(--blue);font-size:16px}.mobile-navigation[open] summary span{transform:rotate(45deg)}.mobile-navigation nav{z-index:12;border-bottom:1px solid var(--ink);background:var(--paper);width:100%;padding:8px 16px 16px;display:grid;position:absolute;top:65px;left:0;box-shadow:0 18px 24px #11111114}.mobile-navigation nav a{border-bottom:1px solid var(--rule);justify-content:space-between;padding:13px 4px;display:flex}.header-actions{grid-column:3;gap:0;font-size:10px}.header-contact{display:none}.hero{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;min-height:calc(100svh - 66px);padding-top:54px}.hero-copy{grid-column:1/5;min-width:0}.hero .eyebrow{overflow-wrap:anywhere;max-width:100%}.hero h1{text-wrap:wrap;max-width:100%;margin-top:28px;font-size:clamp(2.85rem,13vw,3.5rem);line-height:.94}.hero h1 em{display:block}.hero-deck{grid-template-columns:minmax(0,1fr);margin-top:38px}.hero-deck>p{width:min(100%,350px);font-size:18px}.hero-visual{grid-column:1/5;min-width:0;margin-top:56px}.hero-diagram{min-width:0}.hero-diagram-desktop{display:none}.hero-diagram-mobile{display:block}.hero-mobile-kicker,.hero-mobile-labels,.hero-mobile-sequence{fill:var(--ink);font:500 12px var(--font-mono), monospace;letter-spacing:.035em}.hero-mobile-kicker,.hero-mobile-sequence{font-size:10px}.hero-mobile-rule{stroke:var(--rule)}.hero-mobile-path{fill:none;stroke:var(--blue);stroke-width:2.2px;vector-effect:non-scaling-stroke}.hero-mobile-nodes circle{fill:var(--paper);stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.hero-mobile-nodes .accent-node{fill:var(--blue);stroke:var(--blue)}.hero-mobile-sequence text:nth-child(2){text-anchor:middle}.hero-mobile-sequence text:nth-child(3){text-anchor:end}.hero-diagram figcaption{display:none}.scroll-cue{grid-column:1/5;margin-top:48px}.section-label{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:42px}.section-label span{grid-column:1}.section-label h2{grid-column:2/5}.section-intro{margin:0 0 64px;font-size:2.25rem}.project-jump-index{margin-bottom:58px;display:block}.project-jump-index>span{margin-bottom:14px;display:block}.project-jump-index ol{grid-template-columns:1fr;gap:0}.project-jump-index li+li{border-top:1px solid var(--rule)}.project-jump-index a{padding-block:11px}.project{grid-template-columns:repeat(4,1fr);gap:12px}.project-header{grid-column:1/5}.project-index{margin-bottom:30px}.project h3{font-size:2.7rem}.project-summary{margin-top:24px;font-size:17px}.project-meta{grid-column:1/5;grid-template-columns:1fr 1fr}.project-meta div:last-child{grid-column:1/3}.project-figure{grid-column:1/5;margin-top:20px}.project-svg{width:100%;min-width:0;height:auto;transform:none}.project-svg text{font-size:14px}.project-details,.project-portfolio .project-details,.project-optimisations{grid-column:1/5}.project-details .project-marginalia,.project-optimisations ol{grid-template-columns:1fr}.project-optimisations summary>span:first-child{display:block}.project-optimisations summary small{margin-top:3px;display:block}.project-figure figcaption{align-items:start;font-size:11px}.project-figure figcaption span:first-child{max-width:65%}.project-links{grid-column:2/5}.project-future{grid-column:1/5;margin-top:28px;padding:28px 20px;display:block}.project-future-heading>p{margin-bottom:24px}.project-future h4{font-size:2.45rem}.project-future ol{margin-top:38px}.project-future-desktop-item{display:none!important}.project-future-mobile-more{padding-block:0!important;display:block!important}.project-future-mobile-more details{width:100%}.project-future-mobile-more summary{color:#8eafff;cursor:pointer;font:500 10px/1.4 var(--font-mono), monospace;letter-spacing:.05em;justify-content:space-between;align-items:center;padding-block:18px;list-style:none;display:flex}.project-future-mobile-more summary::-webkit-details-marker{display:none}.project-future-mobile-more summary>span:last-child{font-size:18px;transition:transform .18s ease-out}.project-future-mobile-more details[open] summary>span:last-child{transform:rotate(45deg)}.project-future-mobile-more details>div{padding:0 0 18px 38px}.project-gallery{grid-column:1/5}.project-gallery summary{padding:15px 14px}.project-gallery-heading{display:block}.project-gallery-heading small{margin-top:3px;display:block}.project-gallery-action small{display:none}.project-gallery-grid{grid-template-columns:1fr}.project-gallery-grid figure{padding:8px}.pitch-architecture-complete{display:none}.pitch-architecture-mobile{display:block}.project-details .pitch-architecture-mobile{padding:8px}.pitch-architecture-mobile text,.pitch-architecture-mobile .mobile-gated-skip text,.pitch-architecture-mobile .mobile-conditioning text{font-size:12px}.experience-list li{grid-template-columns:repeat(4,1fr);gap:12px}.experience-number{grid-column:1}.experience-list time{grid-column:2/5}.experience-list li>div{grid-column:1/5;margin-top:20px}.experience-impact{grid-column:1/5;margin-top:6px}.racing-feature{margin-inline:calc(-50vw + 50%);padding:32px 20px;display:block}.racing-feature h3{margin-top:28px;font-size:2.7rem}.racing-feature-visual{margin-top:34px}.racing-lessons{grid-template-columns:1fr;margin-top:24px}.racing-feature blockquote{margin-top:34px}.education-list li{grid-template-columns:34px 1fr;gap:10px 12px}.education-list time,.education-list li>div,.education-list li>p{grid-column:2}.education-notes{grid-template-columns:1fr;gap:18px}.profile-grid-desktop{display:none}.profile-accordion{border-top:1px solid var(--ink);display:block}.profile-accordion details{border-bottom:1px solid var(--rule)}.profile-accordion summary{cursor:pointer;min-height:58px;color:var(--ink);font:500 11px/1.4 var(--font-mono), monospace;letter-spacing:.04em;text-transform:uppercase;justify-content:space-between;align-items:center;list-style:none;display:flex}.profile-accordion summary::-webkit-details-marker{display:none}.profile-accordion summary>span:first-child{color:var(--ink)}.profile-accordion summary>span:last-child{color:var(--blue);font-size:19px;transition:transform .18s ease-out}.profile-accordion details[open] summary>span:last-child{transform:rotate(45deg)}.profile-accordion ul{background:var(--rule);grid-template-columns:1fr 1fr;gap:1px;margin:0 0 12px;padding:1px;list-style:none;display:grid}.profile-accordion li{background:var(--paper-raised);grid-template-columns:18px 1fr;align-items:start;gap:9px;padding:12px;display:grid}.profile-accordion li .brand-icon{width:14px;height:14px;margin:2px 0 0}.profile-accordion li>span{line-height:1.25;display:grid}.profile-accordion strong{font-size:12px}.profile-accordion small{color:var(--ink-muted);font:400 10px/1.4 var(--font-mono), monospace;margin-top:2px}.project-list{gap:54px}.now-heading{margin-bottom:40px;display:block}.now-heading h2{font-size:2.8rem}.now-heading p{max-width:330px;margin-top:18px}.now-list li{grid-template-columns:40px 86px minmax(0,1fr) 18px;align-items:start;gap:8px}.now-list h3{font-size:16px}.now-list p{margin-top:7px;font-size:13px;line-height:1.45}.now-list a,.now-list>li>span:last-child{margin-top:2px}.approach-grid{grid-template-columns:repeat(4,1fr);gap:12px}.approach-copy{grid-column:1/5}.approach-copy>h2{font-size:3.15rem}.approach-copy>p{font-size:18px}.approach-visual{grid-column:1/5;margin-top:54px}.contact{min-height:78svh}.contact h2{margin-block:40px;font-size:clamp(4rem,19vw,5rem)}.contact-links{grid-template-columns:1fr;gap:16px;margin-top:54px}.site-footer{grid-template-columns:1fr 1fr;align-content:center;gap:18px 12px;min-height:150px}.site-footer p:nth-child(2){display:none}.site-footer a{justify-self:end}.resume-page{width:calc(100% - 40px);padding-block:32px 64px}.resume-header{display:block}.resume-header nav{text-align:left;grid-template-columns:1fr 1fr;margin-top:28px}.resume-section{display:block}.resume-section>h2{margin-bottom:24px}.resume-projects,.resume-capabilities{grid-template-columns:1fr}.resume-row{align-items:start}.resume-row span,.resume-row time{text-align:right;flex:none}.registration-mark{opacity:.72;width:15px;height:15px;top:18px}.registration-mark:before{height:15px;left:7px}.registration-mark:after{width:15px;top:7px}.registration-mark-left{transform:translate(-35%)}.registration-mark-right{transform:translate(35%)}.registration-mark-blue{background:radial-gradient(circle at center, var(--blue) 0 1.5px, var(--paper) 1.5px 3px, var(--blue) 3px 4px, transparent 4px)}}@media (max-width:380px){:root{--frame:calc(100% - 32px)}.site-header{gap:10px}.hero{padding-top:46px}.hero h1{font-size:clamp(2.75rem,13vw,3.1rem)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}.diagram-paths path,.chart-primary,.chart-secondary,.poker-orbit,.pipeline-arrow,.loop-paths path{stroke-dashoffset:0}.diagram-nodes,.diagram-labels,.chart-markers{opacity:1}}
