@font-face{font-family:Inter Variable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/portfolio/assets/inter-latin-wght-Dx4kXJAl.woff2)format("woff2-variations")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/portfolio/assets/jetbrains-mono-latin-400-V6pRDFza.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/portfolio/assets/jetbrains-mono-latin-600-C8RAYTDA.woff2)format("woff2")}:root{--paper:#f6f8fa;--surface:#fff;--ink:#1f2328;--ink-soft:#2f363d;--muted:#57606a;--teal:#0f766e;--amber:#c2410c;--line:#d0d7de;--chip:#eef1f4;--sq-dark:#e1e6eb;--grout:#1f23280b;--grout-major:#1f232813;--bar:#f6f8fae6;--sans:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--gutter:clamp(16px, 4vw, 48px);--bar-h:56px;--radius:4px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--paper:#0d1117;--surface:#161b22;--ink:#e6edf3;--ink-soft:#c9d1d9;--muted:#9198a1;--teal:#2dd4bf;--amber:#fbbf24;--line:#30363d;--chip:#1c232c;--sq-dark:#212933;--grout:#e6edf309;--grout-major:#e6edf30f;--bar:#0d1117e0;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--paper:#0d1117;--surface:#161b22;--ink:#e6edf3;--ink-soft:#c9d1d9;--muted:#9198a1;--teal:#2dd4bf;--amber:#fbbf24;--line:#30363d;--chip:#1c232c;--sq-dark:#212933;--grout:#e6edf309;--grout-major:#e6edf30f;--bar:#0d1117e0;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--bar-h) + 16px);-webkit-text-size-adjust:100%}body{font-family:var(--sans);color:var(--ink);background-color:var(--paper);background-image:linear-gradient(var(--grout-major) 1px, transparent 1px), linear-gradient(90deg, var(--grout-major) 1px, transparent 1px), linear-gradient(var(--grout) 1px, transparent 1px), linear-gradient(90deg, var(--grout) 1px, transparent 1px);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-position:-1px -1px;background-size:192px 192px,192px 192px,48px 48px,48px 48px;margin:0;font-size:1.0625rem;line-height:1.6}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;font-weight:650;line-height:1.1}p{margin:0 0 .75em}img{max-width:100%;height:auto;display:block}a{color:inherit;-webkit-text-decoration-color:var(--teal);text-decoration-color:var(--teal);text-underline-offset:3px;text-decoration-thickness:1.5px}a:hover{color:var(--teal)}ul,ol{margin:0;padding:0}:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:2px}.mono{font-family:var(--mono);letter-spacing:.02em}.visually-hidden{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);font-family:var(--mono);padding:.5rem .9rem;font-size:.85rem;position:absolute;top:-48px;left:8px}.skip-link:focus{top:8px}.sheet{max-width:1240px;padding:0 var(--gutter);margin:0 auto}@media (min-width:1300px){.sheet{border:1px solid var(--line);background:color-mix(in srgb, var(--paper) 70%, transparent);margin-top:24px;margin-bottom:24px;position:relative}.sheet:before,.sheet:after{content:"";border:0 solid var(--muted);width:18px;height:18px;position:absolute}.sheet:before{border-top-width:1px;border-left-width:1px;top:-10px;left:-10px}.sheet:after{border-bottom-width:1px;border-right-width:1px;bottom:-10px;right:-10px}}.title-block{border:1px solid var(--ink);letter-spacing:.1em;color:var(--ink-soft);background:var(--surface);flex-wrap:wrap;margin:0 0 1.25rem;font-size:.7rem;display:inline-flex}.title-block span{padding:.3rem .65rem}.title-block span+span{border-left:1px solid var(--ink)}.title-block span:first-child{background:var(--ink);color:var(--paper);font-weight:600}.sheet-head{margin-bottom:clamp(1.75rem,4vw,2.75rem)}.sheet-head h2{letter-spacing:-.035em;font-size:clamp(2.1rem,5.2vw,3.6rem);font-weight:700}.lede{max-width:60ch;color:var(--muted);margin-top:.9rem;font-size:1.125rem}.section{padding-block-start:clamp(2.5rem,6vw,4.5rem);padding-block-end:clamp(2.5rem,6vw,4.5rem)}.dim{color:var(--muted);align-items:center;gap:.75rem;padding-inline-start:2px;padding-inline-end:2px;display:flex}.dim-line{background:var(--muted);opacity:.7;flex:1;height:1px;position:relative}.dim-line:first-child:before,.dim-line:last-child:after{content:"";background:var(--muted);width:1px;height:15px;position:absolute;top:-7px}.dim-line:first-child:before{left:0;box-shadow:4px 0 #0000}.dim-line:last-child:after{right:0}.dim-line:first-child{background-image:linear-gradient(135deg, transparent 45%, var(--muted) 45%, var(--muted) 55%, transparent 55%)}.dim-label{letter-spacing:.14em;font-size:.7rem}.callouts{flex-wrap:wrap;gap:.75rem 1.75rem;margin:1rem 0;display:flex}.callout{align-items:flex-end;display:inline-flex}.callout-value{color:var(--amber);letter-spacing:-.01em;font-size:1.45rem;font-weight:600;line-height:1}.callout-leader{background:linear-gradient(to top right, transparent calc(50% - .6px), var(--muted) calc(50% - .6px), var(--muted) calc(50% + .6px), transparent calc(50% + .6px));width:26px;height:18px;margin:0 0 6px 4px}.callout-note{border-bottom:1px solid var(--muted);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);align-self:flex-start;margin-top:-2px;padding:0 .2rem .15rem;font-size:.7rem}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.1rem,2.5vw,1.5rem)}.panel h3{margin-bottom:.4rem;font-size:1.3rem}.kicker{letter-spacing:.1em;text-transform:uppercase;color:var(--teal);margin-bottom:.5rem;font-size:.72rem}.feature-context{color:var(--muted);font-size:.98rem}.chips{flex-wrap:wrap;gap:.4rem;margin:1rem 0 0;list-style:none;display:flex}.chip{background:var(--chip);border:1px solid var(--line);color:var(--ink-soft);border-radius:3px;padding:.18rem .5rem;font-size:.72rem}.ticks{margin:.5rem 0 0;list-style:none}.ticks li{margin-bottom:.4rem;padding-left:1.2rem;position:relative}.ticks li:before{content:"";background:var(--teal);width:.6rem;height:1px;position:absolute;top:.8em;left:0}.sub-head{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:2.5rem 0 1rem;font-size:.78rem;font-weight:600}.button{font-family:var(--mono);letter-spacing:.02em;color:var(--paper);background:var(--ink);border:1px solid var(--ink);border-radius:3px;align-items:center;gap:.4rem;padding:.7rem 1.1rem;font-size:.85rem;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.button:hover{color:var(--paper);background:var(--teal);border-color:var(--teal)}.button-quiet{color:var(--ink);background:var(--surface);border-color:var(--line)}.button-quiet:hover{color:var(--teal);background:var(--surface);border-color:var(--teal)}.arrow-link{font-family:var(--mono);color:var(--teal);border-bottom:1px solid;font-size:.8rem;text-decoration:none}.arrow-link:after{content:" ↗"}.arrow-link:hover{color:var(--amber)}.link-button{color:var(--teal);font-size:inherit;cursor:pointer;background:0 0;border:0;border-bottom:1px solid;padding:0}.topbar{z-index:10;height:var(--bar-h);padding:0 var(--gutter);background:var(--bar);border-bottom:1px solid var(--line);-webkit-backdrop-filter:saturate(1.2)blur(8px);align-items:center;gap:.75rem;display:flex;position:sticky;top:0}.monogram{border:1.5px solid var(--ink);border-radius:3px;flex:none;padding:.2rem .45rem;font-size:.85rem;font-weight:600;text-decoration:none;position:relative}.index{scrollbar-width:none;flex:1;min-width:0;position:relative;overflow-x:auto}.index::-webkit-scrollbar{display:none}.index ol{justify-content:center;gap:.15rem;width:max-content;margin:0 auto;list-style:none;display:flex}.index a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;align-items:baseline;gap:.35rem;padding:.4rem .5rem;font-size:.82rem;text-decoration:none;display:flex}.index a:hover{color:var(--ink)}.index a[aria-current=location]{color:var(--ink);border-bottom-color:var(--amber)}.index a[aria-current=location] .index-no{color:var(--teal)}.index-no{font-size:.72rem;font-weight:600}.index-title{display:none}@media (min-width:1180px){.index-title{display:inline}}.theme-toggle{letter-spacing:.08em;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:3px;flex:none;padding:.35rem .6rem;font-size:.72rem;position:relative}.theme-toggle:hover{border-color:var(--teal)}.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,4rem);padding:clamp(2.5rem,7vw,5rem) 0 clamp(2.5rem,5vw,3.5rem);display:grid}.hero-id{align-items:center;gap:clamp(1rem,3vw,1.75rem);margin-bottom:1.25rem;display:flex}.hero h1{letter-spacing:-.045em;font-size:clamp(2.5rem,6.4vw,5.25rem);font-weight:750;line-height:.98}.headline{font-family:var(--mono);letter-spacing:.04em;color:var(--teal);margin:.75rem 0 0;font-size:clamp(.85rem,1.6vw,1.05rem)}.breadth{max-width:50ch;color:var(--ink-soft);font-size:clamp(1.1rem,1.8vw,1.3rem)}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;display:flex}.portrait{flex:none;width:clamp(92px,13vw,168px);margin:0;position:relative}.portrait img{aspect-ratio:1;object-fit:cover;clip-path:polygon(14% 0,100% 0,100% 86%,86% 100%,0 100%,0 14%);background:var(--chip);width:100%}.portrait:before{content:"";aspect-ratio:1;border:1px solid var(--muted);clip-path:polygon(14% 0,100% 0,100% 86%,86% 100%,0 100%,0 14%);opacity:.6;pointer-events:none;position:absolute;top:-6px;bottom:auto;left:-6px;right:-6px}.portrait:after{content:"";aspect-ratio:1;clip-path:polygon(14% 0,100% 0,100% 86%,86% 100%,0 100%,0 14%);pointer-events:none;background:linear-gradient(90deg,#0000 calc(50% - 1px),#f6f8fa73 calc(50% - 1px) calc(50% + 1px),#0000 calc(50% + 1px)),linear-gradient(#0000 calc(50% - 1px),#f6f8fa73 calc(50% - 1px) calc(50% + 1px),#0000 calc(50% + 1px));position:absolute;top:0;left:0;right:0}.portrait figcaption{letter-spacing:.14em;color:var(--muted);margin-top:.4rem;font-size:.62rem}.plan{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:10px}.plan svg{width:100%;height:auto;display:block}.plan[data-driving] svg{will-change:transform}.plan figcaption,.knight figcaption,.hobby-figure figcaption,.ruler figcaption{letter-spacing:.1em;color:var(--muted);justify-content:space-between;gap:1rem;margin-top:.5rem;font-size:.68rem;display:flex}.plan-grid line{stroke:var(--line);stroke-width:1px}.plan-intent{fill:none;stroke:var(--muted);stroke-width:1.25px;stroke-dasharray:3 6;opacity:.8}.plan-run{fill:none;stroke:var(--amber);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.plan-node{fill:var(--amber)}.plan-goal{fill:var(--surface);stroke:var(--amber);stroke-width:2.5px}.plan-label{font-family:var(--mono);letter-spacing:.12em;fill:var(--muted);font-size:10px}.robot-body{fill:var(--surface);stroke:var(--ink);stroke-width:2px}.robot-wheel{fill:var(--ink)}.robot-nozzle{fill:var(--amber)}.robot-lidar{fill:var(--teal)}.robot-sweep path{fill:none;stroke:var(--teal);stroke-width:1.5px;stroke-linecap:round}.robot-sweep path:nth-child(2){opacity:.6}.robot-sweep path:nth-child(3){opacity:.3}@media (prefers-reduced-motion:no-preference){.plan[data-driving] .robot-sweep{animation:1.6s ease-in-out infinite sweep}}@keyframes sweep{0%,to{opacity:1}50%{opacity:.35}}.facts{border:1px solid var(--ink);background:var(--surface);grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;display:grid}.facts li{letter-spacing:.03em;align-items:baseline;gap:.6rem;padding:.85rem 1rem;font-size:.8rem;display:flex}.facts li+li{border-left:1px solid var(--ink)}.facts-no{color:var(--amber);font-weight:600}.now-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;display:grid}.now-card h3{letter-spacing:-.03em;margin-bottom:.9rem;font-size:clamp(1.6rem,3vw,2.1rem)}.now-role{letter-spacing:0;color:var(--muted);margin-top:.35rem;font-size:1rem;font-weight:500;display:block}.now-since{letter-spacing:.12em;color:var(--amber);font-size:.7rem}.filters{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.filter{color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:3px;align-items:baseline;gap:.4rem;padding:.45rem .8rem;font-size:.8rem;display:inline-flex}.filter:hover{border-color:var(--teal)}.filter[aria-pressed=true]{color:var(--paper);background:var(--ink);border-color:var(--ink)}.filter-count{opacity:.75;font-size:.68rem}.feature{border-bottom:1px dashed var(--line);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,3.5rem);padding-block-start:clamp(1.75rem,4vw,3rem);padding-block-end:clamp(1.75rem,4vw,3rem);display:grid}.feature-flip .feature-shot{order:2}.feature-shot{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:8px}.feature-shot img{border-radius:2px;width:100%}.feature-shot figcaption{letter-spacing:.12em;color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem .8rem;margin-top:.45rem;font-size:.64rem;display:flex}.plate-shot .system-plate{width:100%;max-width:520px;height:auto;margin-inline-start:auto;margin-inline-end:auto;display:block}.view-toggle{gap:0;display:inline-flex}.view-button{letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;padding:.3rem .6rem;font-size:.66rem}.view-button+.view-button{border-left:0}.view-button:first-child{border-radius:3px 0 0 3px}.view-button:last-child{border-radius:0 3px 3px 0}.view-button:hover{border-color:var(--teal)}.view-button[aria-pressed=true]{color:var(--paper);background:var(--ink);border-color:var(--ink)}.feature-body h3{letter-spacing:-.03em;margin-bottom:.4rem;font-size:clamp(1.6rem,3.2vw,2.3rem)}.work-links{flex-wrap:wrap;gap:.6rem 1.2rem;margin:1.1rem 0 0;display:flex}.compact-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1.25rem;display:grid}.plate{background:var(--surface);width:100%;height:auto;display:block}.plate-done path{fill:none;stroke:var(--amber);stroke-width:3px;stroke-linecap:round}.plate-rays line{stroke:var(--teal);stroke-width:1.25px;stroke-dasharray:2 5}.plate-notes path{fill:none;stroke:var(--muted);stroke-width:1px}.plate-notes text{font-family:var(--mono);letter-spacing:.12em;fill:var(--ink-soft);font-size:12px}.timeline{padding-left:2.25rem;list-style:none;position:relative}.timeline:before,.timeline:after{content:"";position:absolute;left:.6rem}.timeline:before{background:var(--ink);width:1px;top:.4rem;bottom:.4rem}.timeline:after{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);width:15px;top:.4rem;bottom:.4rem;left:calc(.6rem - 7px)}.timeline-item{border-bottom:1px solid var(--line);position:relative}.timeline-tick{--kind:var(--amber);background:var(--kind);width:13px;height:1px;box-shadow:0 0 0 .5px var(--kind);position:absolute;top:1.45rem;left:calc(-1.65rem - 6px)}.timeline-tick:after{content:"";background:var(--kind);border:1.5px solid var(--kind);box-sizing:border-box;border-radius:50%;width:8px;height:8px;position:absolute;top:-4px;left:2.5px}.timeline-tick[data-kind=venture]:after{background:var(--paper);border-color:var(--ink)}.timeline-tick[data-kind=venture]{--kind:var(--ink)}.timeline details>summary{cursor:pointer;grid-template-columns:11.5rem minmax(0,1fr) auto auto;align-items:baseline;gap:.5rem 1rem;padding:1rem 0;list-style:none;display:grid}.timeline details>summary::-webkit-details-marker{display:none}.timeline details>summary:after{content:"+";font-family:var(--mono);color:var(--muted);text-align:center;width:1rem}.timeline details[open]>summary:after{content:"−";color:var(--amber)}.timeline summary:hover .timeline-title{color:var(--teal)}.timeline-period{color:var(--muted);font-size:.78rem}.timeline-title{font-size:1.12rem;font-weight:600}.org-tag{letter-spacing:.08em;color:var(--ink-soft);border:1px solid var(--line);white-space:nowrap;border-radius:2px;justify-self:end;padding:.12rem .45rem;font-size:.68rem}.timeline-body{max-width:62rem;padding:0 0 1.25rem 12.5rem}.timeline-org{color:var(--muted);font-size:.95rem}.research{gap:1.25rem;list-style:none;display:grid}.research-item h3{max-width:48ch;margin-bottom:.7rem;font-size:clamp(1.2rem,2.2vw,1.5rem)}.research-meta{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.5rem;margin:.75rem 0 0;font-size:.78rem;display:flex}.rail{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;grid-auto-columns:minmax(78%,1fr);grid-auto-flow:column;gap:1rem;padding-bottom:.75rem;list-style:none;display:grid;position:relative;overflow-x:auto}.medal{scroll-snap-align:start;background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--amber);border-radius:var(--radius);flex-direction:column;align-items:flex-start;padding:1.1rem 1.2rem;display:flex}.medal h4{margin:.7rem 0 .25rem;font-size:1.12rem}.medal-placing{letter-spacing:.12em;color:var(--amber);border:1px solid var(--amber);border-radius:2px;padding:.1rem .45rem;font-size:.68rem;font-weight:600}.medal-event{color:var(--muted);font-size:.9rem}.medal-note{flex:1;font-size:.95rem}#rail-honours+.rail .medal{border-top-color:var(--teal)}#rail-honours+.rail .medal-placing{color:var(--teal);border-color:var(--teal)}@media (min-width:900px){.rail{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-auto-flow:row;padding-bottom:0;overflow:visible}.rail-wide{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.legend{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2rem,5vw,4rem);margin:0;display:grid}.legend-row{border-top:1px solid var(--line);padding:1rem 0}.legend dt{align-items:center;gap:.7rem;margin-bottom:.35rem;font-weight:600;display:flex}.legend-key{width:1.6rem;height:1.6rem;color:var(--teal);border:1px solid var(--teal);border-radius:2px;place-items:center;font-size:.75rem;font-weight:600;display:inline-grid}.legend dd{color:var(--muted);margin:0 0 0 2.3rem;font-size:.95rem}.edu-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.edu-main h3{letter-spacing:-.025em;font-size:clamp(1.4rem,2.6vw,1.9rem)}.edu-side{gap:1.25rem;display:grid}.langs{margin:.5rem 0 0}.langs div{border-bottom:1px dashed var(--line);justify-content:space-between;gap:1rem;padding:.35rem 0;display:flex}.langs dd{color:var(--muted);text-align:right;margin:0;font-size:.78rem}.knight{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:10px}.knight-board{border:1px solid var(--ink);cursor:pointer;background:0 0;width:100%;padding:0;display:block;position:relative}.knight-board svg{width:100%;height:auto;display:block}.sq-light{fill:var(--surface)}.sq-dark{fill:var(--sq-dark)}.knight-path{fill:none;stroke:var(--amber);stroke-width:1.75px;stroke-linejoin:round;opacity:.6}.knight-move{font-family:var(--mono);fill:var(--muted);font-size:8px}.knight-piece{fill:var(--teal);font-size:28px}.contact-email{letter-spacing:-.03em;overflow-wrap:anywhere;margin:0 0 1.5rem;font-size:clamp(1.4rem,4.6vw,3rem);font-weight:650}.contact-email a{text-underline-offset:8px;text-decoration-thickness:3px}.footer{border-top:1px solid var(--ink);letter-spacing:.06em;color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.75rem 1.5rem;padding:1.5rem 0 2rem;font-size:.75rem;display:flex}.footer a{color:var(--ink)}@media (max-width:899px){.hero,.now-grid,.feature,.edu-grid{grid-template-columns:minmax(0,1fr)}.feature-flip .feature-shot{order:0}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}.facts li:nth-child(3){border-left:0}.facts li:nth-child(n+3){border-top:1px solid var(--ink)}.legend{grid-template-columns:minmax(0,1fr)}.timeline details>summary{grid-template-columns:minmax(0,1fr) auto}.timeline-period{grid-column:1/-1}.timeline-title{grid-column:1}.timeline-tags{grid-area:3/1;justify-self:start}.timeline details>summary:after{grid-area:2/2}.timeline-body{padding-left:0}}@media (max-width:480px){.theme-toggle-word{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.index a{padding-inline-start:.32rem;padding-inline-end:.32rem}.timeline{padding-left:1.6rem}.timeline-tick{left:calc(-1rem - 5px)}.facts li{padding:.7rem .75rem;font-size:.74rem}.title-block{font-size:.62rem}}@media (max-width:380px){.topbar{gap:.5rem}.index a{padding-inline-start:.22rem;padding-inline-end:.22rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.not-public{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.8rem}[data-kind=industry]{--kind:var(--teal)}[data-kind=research]{--kind:var(--amber)}[data-kind=venture]{--kind:var(--ink)}[data-kind=campus]{--kind:var(--muted)}.kind-swatch{background:var(--kind);border:1.5px solid var(--kind);flex:none;width:.7rem;height:.7rem;display:inline-block}[data-kind=venture] .kind-swatch,.ruler-bar[data-kind=venture]{background:0 0}.sheet-legend{border:1px solid var(--ink);background:var(--surface);border-top:0;grid-column:1/-1;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.5rem 1.25rem;margin-top:calc(-1*clamp(2rem,5vw,4rem));padding:.7rem 1rem;display:grid}.sheet-legend-title{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0;font-size:.68rem}.sheet-legend-list{flex-wrap:wrap;gap:.5rem 1.75rem;margin:0;padding:0;list-style:none;display:flex}.sheet-legend-list li{align-items:center;gap:.45rem;font-size:.8rem;display:inline-flex}.sheet-legend-label{letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:600}.sheet-legend-note{color:var(--muted)}.numbers{padding-block-start:clamp(1rem,3vw,2rem);padding-block-end:clamp(1.5rem,4vw,2.5rem)}.numbers-title{letter-spacing:-.03em;margin:.4rem 0 1.25rem;font-size:clamp(1.6rem,3.4vw,2.3rem)}.numbers-grid{border-top:1px solid var(--ink);border-left:1px solid var(--ink);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.number-tile{background:var(--surface);border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);flex-direction:column;min-width:0;padding:1.6rem clamp(.9rem,2.4vw,1.6rem) 1.1rem;display:flex;position:relative}.number-tile:before,.number-tile:after{content:"";border-color:var(--line);border-style:solid;width:9px;height:9px;position:absolute}.number-tile:before{border-width:1px 0 0 1px;top:6px;left:6px}.number-tile:after{border-width:0 1px 1px 0;bottom:6px;right:6px}.number-no{letter-spacing:.14em;color:var(--muted);font-size:.62rem;position:absolute;top:.55rem;left:1.3rem}.number-swatch{background:var(--kind);border:1.5px solid var(--kind);width:.7rem;height:.7rem;position:absolute;top:.7rem;right:.9rem}.number-tile[data-kind=venture] .number-swatch{background:0 0}.number-value{letter-spacing:-.04em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--kind);margin-top:.35rem;font-size:clamp(1.7rem,4.4vw,3.1rem);font-weight:600;line-height:1}.number-tile[data-kind=venture] .number-value,.number-tile[data-kind=campus] .number-value{color:var(--ink)}.number-callout{align-items:flex-start;margin-top:.15rem;margin-left:.6rem;display:flex}.number-leader{background:linear-gradient(to bottom left, transparent calc(50% - .6px), var(--muted) calc(50% - .6px), var(--muted) calc(50% + .6px), transparent calc(50% + .6px));flex:none;width:22px;height:16px}.number-label{border-bottom:1px solid var(--muted);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-top:12px;padding:0 .2rem .15rem;font-size:.7rem}.number-source{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:auto;padding-top:.9rem;font-size:.66rem}.ruler{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 2rem;padding:12px 14px 10px}.ruler-lanes,.ruler-axis{gap:3px;display:grid}.ruler-lane,.ruler-axis{grid-template-columns:6.5rem minmax(0,1fr);align-items:center;gap:.75rem;display:grid}.ruler-tag{letter-spacing:.08em;color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;font-size:.6rem;overflow:hidden}.ruler-track{background-image:linear-gradient(90deg, var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--grout-major) 1px, transparent 1px);background-size:33.3333% 100%,8.33333% 100%;height:11px;position:relative}.ruler-bar{background:var(--kind);border:1.5px solid var(--kind);border-radius:1px;min-width:4px;position:absolute;top:1px;bottom:1px}.ruler-axis{border-top:1px solid var(--ink);margin-top:4px;padding-top:4px}.ruler-scale{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.ruler-year{border-left:1px solid var(--ink);letter-spacing:.1em;padding-left:4px;font-size:.7rem;font-weight:600}.timeline-year{z-index:1;writing-mode:vertical-rl;letter-spacing:.12em;background:var(--paper);border:1px solid var(--ink);padding:.2rem .1rem;font-size:.56rem;font-weight:600;position:absolute;top:0;left:-1.65rem;transform:translate(-50%,-88%)rotate(180deg)}.timeline-item:first-child .timeline-year{top:0;transform:translate(-50%)rotate(180deg)}.timeline-item:first-child .timeline-tick{top:3.2rem}.timeline-item:first-child details>summary{padding-top:2.45rem}.timeline-tags{flex-wrap:wrap;justify-self:end;gap:.4rem;display:inline-flex}.kind-tag{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap;align-items:center;gap:.35rem;padding:.12rem .45rem;font-size:.64rem;display:inline-flex}.kind-tag .kind-swatch{width:.55rem;height:.55rem}.phones{padding:14px 12px 8px}.phone-strip{scroll-snap-type:x mandatory;grid-auto-columns:minmax(118px,1fr);grid-auto-flow:column;gap:12px;margin:0;padding:0 0 6px;list-style:none;display:grid;overflow-x:auto}.phone{scroll-snap-align:start;background:var(--chip);border:1px solid var(--line);border-radius:16px;padding:5px}.phone img{border-radius:11px;width:100%}.phone:nth-child(2n){margin-top:18px}.beyond-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.beyond-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-width:0;display:flex}.beyond-tile .knight,.hobby-figure{border:0;border-bottom:1px dashed var(--line);background:0 0;border-radius:0;margin:0;padding:10px}.beyond-tile .knight-board{aspect-ratio:1}.hobby-figure .plate{aspect-ratio:1;border:1px solid var(--ink)}.beyond-tile figcaption{flex-wrap:wrap;gap:.2rem 1rem;font-size:.6rem}.beyond-text{padding:1rem clamp(1rem,2vw,1.25rem) 1.25rem}.beyond-text h3{margin-bottom:.4rem;font-size:1.15rem}.plate-stamp{font-family:var(--mono);letter-spacing:.14em;fill:var(--amber);font-size:12px;font-weight:600}.plate-dim path{fill:none;stroke:var(--muted);stroke-width:1px}.plate-dim text{font-family:var(--mono);letter-spacing:.1em;fill:var(--muted);font-size:10px}.key-white{fill:var(--surface);stroke:var(--ink);stroke-width:1.25px}.key-on{fill:var(--amber);fill-opacity:.35}.key-black{fill:var(--ink)}.cube-base polygon,.cube-layer polygon{stroke:var(--ink);stroke-width:1.1px;stroke-linejoin:round}.cube-t{fill:var(--amber);fill-opacity:.4}.cube-inner{fill-opacity:.12}.cube-r{fill:var(--teal);fill-opacity:.35}.cube-l{fill:var(--chip)}.cube-guides line{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 4}@media (prefers-reduced-motion:no-preference){.cube-layer{transition:transform .5s}.beyond-tile:hover .cube-layer{transform:translateY(-10px)}.beyond-tile:hover .key-on{animation:.9s ease-in-out key-press}}@keyframes key-press{0%,to{fill-opacity:.35}40%{fill-opacity:.9}}@media (max-width:899px){.numbers-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.beyond-tiles{grid-template-columns:minmax(0,1fr);max-width:520px}.sheet-legend{grid-template-columns:minmax(0,1fr)}.sheet-legend-list li{flex-wrap:wrap}.timeline-tags{justify-self:start}}@media (max-width:1099px) and (min-width:900px){.beyond-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:480px){.ruler-lane,.ruler-axis{grid-template-columns:4.6rem minmax(0,1fr);gap:.5rem}.timeline-year{left:-1rem}.number-tile{padding-inline-start:.75rem;padding-inline-end:.75rem}.number-value{letter-spacing:-.05em;font-size:1.4rem}.number-label{font-size:.62rem}}.timeline details>summary{grid-template-columns:11.5rem minmax(0,1fr) 13.5rem auto;align-items:start}.timeline-period{padding-top:.25rem}.timeline-main{gap:.55rem;min-width:0;display:grid}.role-metrics{flex-wrap:wrap;gap:.4rem 1.4rem;display:flex}.role-metrics .callout-value{font-size:1.05rem}.role-metrics .callout-leader{width:18px;height:12px;margin-bottom:4px}.role-metrics .callout-note{font-size:.64rem}.role-spec{border-left:1px solid var(--line);text-align:right;justify-items:end;gap:.35rem;padding:.15rem 0 0 .75rem;display:grid}.role-length{letter-spacing:.06em;text-transform:uppercase;color:var(--ink);font-size:.78rem;font-weight:600}.role-ongoing{color:var(--muted);font-weight:400}.role-spec .timeline-tags{flex-wrap:nowrap;justify-content:flex-end;justify-self:end}.timeline details>summary:after{padding-top:.15rem}.ruler-lane,.timeline-item{transition:background-color .12s}@media (hover:hover) and (min-width:900px){.ruler-lane[data-active]{background:var(--chip)}.ruler-lane[data-active] .ruler-tag{color:var(--ink);font-weight:600}.ruler-lane[data-active] .ruler-bar{outline:2px solid var(--kind);outline-offset:1px}.ruler:has(.ruler-lane[data-active]) .ruler-lane:not([data-active]) .ruler-bar{opacity:.35}.timeline-item[data-active]{background:linear-gradient(90deg, var(--chip), transparent 85%)}.timeline-item[data-active] .timeline-title{color:var(--teal)}}.timeline summary:focus-visible{outline:2px solid var(--teal);outline-offset:2px}@media (max-width:1099px) and (min-width:900px){.timeline details>summary{grid-template-columns:9rem minmax(0,1fr) 13rem auto}.timeline-body{padding-left:10rem}}@media (max-width:899px){.timeline details>summary{grid-template-columns:minmax(0,1fr) auto}.timeline-main{grid-column:1}.role-spec{text-align:left;border-left:0;grid-area:3/1;grid-auto-flow:column;justify-content:start;place-items:center start;gap:.5rem;padding:0}.role-spec .timeline-tags{flex-wrap:wrap;justify-content:flex-start;justify-self:start}.timeline details>summary:after{grid-area:2/2}}@media (max-width:480px){.role-spec{grid-auto-flow:row;gap:.35rem}}.refs{gap:1.25rem;list-style:none;display:grid}.ref{grid-template-columns:3.25rem minmax(0,1fr);gap:0 1.25rem;display:grid}.ref-no{color:var(--ink);border-right:1px solid var(--line);padding-top:.1rem;font-size:1.35rem;font-weight:600;line-height:1.1}.ref-head{flex-wrap:wrap;align-items:center;gap:.4rem .9rem;margin-bottom:.7rem;display:flex}.ref-stamp{--stamp:var(--muted);letter-spacing:.12em;color:var(--stamp);border:1.5px solid var(--stamp);outline:1px solid var(--stamp);outline-offset:2px;border-radius:2px;padding:.18rem .55rem;font-size:.68rem;font-weight:600}.ref-stamp[data-status=published]{--stamp:var(--teal)}.ref-stamp[data-status=submitted]{--stamp:var(--amber)}.ref-stamp[data-status=poster]{--stamp:var(--ink-soft)}.ref-kind{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.68rem}.ref h3{max-width:52ch;margin-bottom:.6rem;font-size:clamp(1.15rem,2.2vw,1.45rem)}.ref-detail{max-width:72ch}.doi-line{background:var(--chip);border:1px dashed var(--line);border-radius:2px;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:.9rem 0 0;padding:.55rem .75rem;font-size:.8rem;display:flex}.doi-label{letter-spacing:.12em;color:var(--muted);font-size:.66rem;font-weight:600}.doi-value{overflow-wrap:anywhere;min-width:0;font-family:var(--mono);color:var(--ink);-webkit-user-select:all;user-select:all}.doi-copy{letter-spacing:.08em;text-transform:uppercase;color:var(--ink);background:var(--surface);border:1px solid var(--muted);cursor:pointer;border-radius:2px;margin-left:auto;padding:.15rem .55rem;font-size:.7rem}.doi-copy:hover{border-color:var(--teal);color:var(--teal)}.doi-copy:focus-visible{outline:2px solid var(--teal);outline-offset:2px}@media (max-width:480px){.ref{grid-template-columns:minmax(0,1fr)}.ref-no{border-right:0;margin-bottom:.5rem;font-size:1.1rem}.doi-copy{margin-left:0}}.medal-top{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.medal-glyph{width:40px;height:46px;color:var(--amber);flex:none}#rail-honours+.rail .medal-glyph{color:var(--teal)}.medal-repeat{color:var(--surface);background:var(--teal);border-radius:2px;padding:.05rem .4rem;font-size:.78rem;font-weight:600}.medal-years{gap:.3rem;margin:.15rem 0 .4rem;display:flex}.medal-year{letter-spacing:.08em;color:var(--ink-soft);border:1px solid var(--line);border-bottom:2px solid var(--teal);padding:0 .3rem;font-size:.62rem}.legend-note{letter-spacing:.04em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:-.5rem 0 1.25rem;font-size:.72rem;display:flex}.legend-note-text{flex:16rem;min-width:0}.legend dt{flex-wrap:wrap}.legend-group{flex:auto;min-width:0}a.legend-key{text-decoration:none}a.legend-key:hover{color:var(--surface);background:var(--teal)}a.legend-key:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.legend-row{scroll-margin-top:calc(var(--bar-h) + 16px)}.legend-row:target{background:linear-gradient(90deg, var(--chip), transparent 90%);border-top-color:var(--teal)}.legend-row:target .legend-key{color:var(--surface);background:var(--teal)}.freq{align-items:center;gap:.4rem;margin-left:auto;font-weight:400;display:inline-flex}.freq-ticks,.freq-sample{gap:2px;display:inline-flex}.freq-tick{border:1px solid var(--muted);width:4px;height:12px}.freq-tick[data-on]{background:var(--teal);border-color:var(--teal)}.freq-count{min-width:2.2rem;color:var(--muted);text-align:right;font-size:.68rem}.honours-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:.4rem;margin:.9rem 0 .4rem;padding:.6rem 0;list-style:none;display:flex}.honour-stamp{letter-spacing:.1em;text-transform:uppercase;color:var(--teal);border:1px solid var(--teal);border-radius:2px;padding:.15rem .5rem;font-size:.68rem;font-weight:600}.honour-stamp:first-child{color:var(--amber);border-color:var(--amber)}@media (prefers-reduced-motion:reduce){.ruler-lane,.timeline-item{transition:none}}.topbar{--progress-h:2px}.scroll-progress{height:var(--progress-h);background:var(--amber);transform-origin:0;pointer-events:none;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.theme-toggle:focus-visible{outline-offset:2px}@media (max-width:719px){.topbar .index{scroll-snap-type:x proximity;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 14px calc(100% - 14px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 14px calc(100% - 14px),#0000 100%)}.topbar .index ol{justify-content:flex-start;margin:0;padding-inline-start:10px;padding-inline-end:10px}.topbar .index li{scroll-snap-align:center}.topbar .index-title{display:inline}.topbar .index a{padding-inline-start:.45rem;padding-inline-end:.45rem}}.hero{--hero-rule:color-mix(in srgb, var(--line) 80%, var(--muted))}.hero .hero-id{align-items:flex-end;margin-bottom:clamp(1.25rem,2.6vw,1.75rem)}.hero h1{letter-spacing:-.045em;text-wrap:balance;font-size:clamp(2.4rem,5.6vw,4.6rem);line-height:.95}.hero .headline{letter-spacing:.03em;flex-direction:column;gap:.2rem;margin-top:clamp(.75rem,1.6vw,1.1rem);font-size:clamp(.82rem,1.25vw,.98rem);line-height:1.35;display:flex}.hero .headline-role{color:var(--ink);font-weight:600}.hero .headline-focus{color:var(--teal)}.hero .breadth{text-wrap:pretty;max-width:46ch;margin-bottom:0;font-size:clamp(1.05rem,1.55vw,1.2rem);line-height:1.6}.hero .hero-actions{align-items:center;margin-top:clamp(1.5rem,3vw,2rem)}.hero-quick{flex-wrap:wrap;align-items:center;gap:0 1.25rem;width:100%;margin-top:-.25rem;display:flex}.hero-quick-link{letter-spacing:.03em;min-height:44px;color:var(--ink-soft);text-decoration:underline;-webkit-text-decoration-color:var(--teal);text-decoration-color:var(--teal);text-underline-offset:4px;cursor:pointer;background:0 0;border:0;align-items:center;gap:.35rem;padding:0;font-size:.8rem;text-decoration-thickness:1px;display:inline-flex}.hero-quick-link:hover{color:var(--teal)}.hero-quick .copy-email{min-width:11ch}.copy-email[data-state=copied]{color:var(--teal)}.copy-email[data-state=failed]{color:var(--amber)}.copy-email-glyph{text-align:center;width:1em;display:inline-block}.rev-strip{letter-spacing:.12em;color:var(--muted);border-top:1px dashed var(--hero-rule);flex-wrap:wrap;margin:clamp(1.5rem,3vw,2.25rem) 0 0;padding-top:.6rem;font-size:.66rem;display:inline-flex}.rev-strip span{padding-right:.5rem}.rev-strip .rev-strip-key{color:var(--ink-soft);font-weight:600}.rev-strip .rev-strip-key:not(:first-child){border-left:1px solid var(--hero-rule);padding-left:.75rem}.plan .plan-progress{font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap;margin-left:auto}.plan figcaption{flex-wrap:wrap;gap:.25rem 1rem}.contact .contact-email{margin-bottom:clamp(1.5rem,3vw,2.25rem)}.tb{--tb-rule:var(--ink);border:1.5px solid var(--tb-rule);background:var(--tb-rule);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:0;font-size:.78rem;display:grid}.tb-cell{background:var(--surface);min-width:0;padding:.6rem .8rem .7rem}.tb .tb-title{grid-column:1/-1;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.tb .tb-title dd{font-size:.95rem}.tb dt{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:.62rem}.tb dd{color:var(--ink);overflow-wrap:anywhere;margin:.2rem 0 0;font-weight:600}.tb dd a{border-bottom:1px solid var(--teal);text-decoration:none}.tb dd a:hover{color:var(--teal)}.tb-copy{max-width:100%;font:inherit;color:inherit;text-align:left;overflow-wrap:anywhere;border:0;border-bottom:1px dashed var(--teal);cursor:copy;background:0 0;align-items:baseline;gap:.4rem;padding:0;font-weight:600;display:inline-flex}.tb-copy:hover{color:var(--teal)}@media (max-width:899px){.tb{grid-template-columns:repeat(2,minmax(0,1fr))}.tb .tb-title{flex-direction:column;gap:0}.tb .tb-email,.tb .tb-resume{grid-column:1/-1}}.footer{align-items:center}.to-top{min-height:44px;color:var(--ink);align-items:center;gap:.5rem;text-decoration:none;display:inline-flex}.to-top span{border-bottom:1px solid var(--teal)}.to-top-dim{flex:none;overflow:visible}.to-top-dim path{fill:none;stroke:currentColor;stroke-width:1.25px}.to-top-dim .to-top-head{fill:var(--amber);stroke:none}.to-top:hover{color:var(--teal)}@media (prefers-reduced-motion:no-preference){.to-top-dim{transition:transform .2s}.to-top:hover .to-top-dim{transform:translateY(-3px)}.to-top:focus-visible .to-top-dim{transform:translateY(-3px)}.hero-quick-link .copy-email-glyph{transition:transform .2s}.copy-email[data-state=copied] .copy-email-glyph{transform:scale(1.15)}}
