:root{--raw-paper: #f5f2ec;--raw-stone: #e7e3da;--raw-stone-shade: #e3dfd6;--raw-ink: #1c1b18;--raw-ink-blue: #1e4b7a;--raw-terracotta: #a6431e;--raw-sublegend: #64625e;--raw-rule: #807e7a;--raw-rule-soft: #c5c3bd}:root{color-scheme:light;--surface-page: var(--raw-paper);--surface-figure: var(--raw-stone);--surface-inset: var(--raw-stone-shade);--ink: var(--raw-ink);--ink-accent: var(--raw-ink-blue);--ink-data: var(--raw-terracotta);--ink-secondary: var(--raw-sublegend);--rule: var(--raw-rule);--rule-soft: var(--raw-rule-soft);--on-accent: var(--raw-paper);--ground: var(--surface-page);--plate: var(--surface-figure);--plate-2: var(--surface-inset);--grid: var(--rule-soft);--axis: var(--rule);--ink-2: var(--ink-secondary);--ink-3: var(--ink-secondary);--series-1: var(--ink-data);--series-2: var(--ink-accent);--series-3: var(--ink-data);--logo-chip: #ffffff;--hairline: 1px;--case-border: 2px;--gasket: 12px;--r-xs: 2px;--r-chip: 999px;--font-display: "Martian Mono Subset", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--font-mono: var(--font-display);--font-body: "Familjen Grotesk Subset", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--fs-100: .6875rem;--fs-200: .75rem;--fs-300: .8125rem;--fs-400: .875rem;--fs-500: 1rem;--fs-600: 1.0625rem;--fs-700: 1.25rem;--fs-800: 1.5rem;--fs-850: 1.75rem;--fs-900: 2.6rem;--fs-display: clamp(2.4rem, 5.2vw, 3.75rem);--lh-display: 1.02;--lh-heading: 1.15;--lh-sub: 1.2;--lh-body: 1.65;--measure-tight: 22ch;--measure-body: 56ch;--measure-prose: 66ch;--measure-mono: 68ch;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--section-gap: var(--space-9);--t-tap: .12s;--t-hover: .18s;--t-reveal: .3s;--ease-out: cubic-bezier(.215, .61, .355, 1)}@font-face{font-family:Martian Mono Subset;font-style:normal;font-weight:400 700;font-stretch:112.5%;font-display:swap;src:url(/fonts/martian-mono-latin-400-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2122,U+2212,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono Subset;font-style:normal;font-weight:400 700;font-stretch:112.5%;font-display:swap;src:url(/fonts/martian-mono-sup-400-700.woff2) format("woff2");unicode-range:U+2020}@font-face{font-family:Familjen Grotesk Subset;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/familjen-grotesk-latin-400-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2122,U+2212,U+FEFF,U+FFFD}@font-face{font-family:Familjen Grotesk Subset;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/familjen-grotesk-sup-400-700.woff2) format("woff2");unicode-range:U+2020}:root{font-synthesis-style:none}em,i,cite,dfn,var,address,.em{font-style:normal;font-variant-caps:all-small-caps;letter-spacing:.06em;text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.1em}h1 em,h2 em,h3 em,h4 em,h1 i,h2 i,h3 i,h4 i,h1 .em,h2 .em,h3 .em,h4 .em{letter-spacing:inherit}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}[id]{scroll-margin-top:88px}body{margin:0;background:var(--surface-page);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-600);line-height:var(--lh-body)}body.modal-open{overflow:hidden}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0}h1{font-size:var(--fs-display);line-height:var(--lh-display);font-weight:700;letter-spacing:-.015em}h2{font-size:var(--fs-800);line-height:var(--lh-heading);font-weight:600}h3{font-size:var(--fs-700);line-height:var(--lh-sub);font-weight:600}h1,h2,h3{text-wrap:balance;overflow-wrap:break-word}p{margin:0 0 var(--space-4);max-width:var(--measure-prose);text-wrap:pretty;overflow-wrap:break-word}.cta-text-link,.project-links a,.sweep-source,.system-copy h3 a,.role-card h3 a,.sheet-block h3 a{overflow-wrap:anywhere}a{color:var(--series-2);text-decoration-thickness:1px;text-underline-offset:2px}a:hover,a:focus-visible{color:var(--series-2)}:focus-visible{outline:2px solid var(--series-2);outline-offset:2px}::selection{background:var(--series-2);color:var(--ground)}img{max-width:100%;height:auto}#root{display:flex;flex-direction:column;min-height:100vh}#root>main,#root>.static-fallback>main{flex:1 0 auto}.static-fallback{display:contents}.container{max-width:1120px;margin:0 auto;padding:0 var(--space-5)}@media (max-width: 480px){.container{padding:0 var(--space-4)}}.mono{font-family:var(--font-mono)}.kicker{font-family:var(--font-mono);font-size:var(--fs-300);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:16px;top:-64px;z-index:100;background:var(--plate);color:var(--ink);border:var(--hairline) solid var(--grid);border-radius:var(--r-xs);padding:10px var(--space-4);transition:top var(--t-tap) ease}.skip-link:focus-visible{top:12px}.nav{position:sticky;top:0;z-index:10;height:64px;background:color-mix(in srgb,var(--plate) 97%,transparent);backdrop-filter:saturate(1.2) blur(6px);-webkit-backdrop-filter:saturate(1.2) blur(6px);border-bottom:var(--hairline) solid var(--grid)}@supports not (backdrop-filter: blur(6px)){.nav{background:var(--plate)}}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px}.nav-brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);min-height:44px}.nav-wordmark{font-family:var(--font-display);font-weight:700;font-size:var(--fs-700);color:var(--ink)}.nav-brand,.nav-wordmark{color:var(--ink)}.nav-tabs{display:flex;align-items:center;gap:8px;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;padding-block:5px;margin-block:-5px;scrollbar-width:none}.nav-tabs::-webkit-scrollbar{display:none}@media (max-width: 639px){.nav-wordmark{display:none}.nav-tabs{gap:6px}.nav-tabs .btn{padding:8px 10px;font-size:var(--fs-400)}span.chip,span.proof-chip{white-space:normal}}span.chip,span.proof-chip{white-space:normal;overflow-wrap:anywhere}@media (max-width: 479px){.nav-inner{gap:8px}.nav-tabs{gap:4px}.nav-tabs .btn{padding:8px 6px;font-size:var(--fs-300)}}@media (max-width: 379px){.nav-tabs{gap:3px}.nav-tabs .btn{padding:8px 5px;font-size:var(--fs-200)}}@media (max-width: 359px){.nav-brand{display:none}}.btn{font-family:var(--font-body)}.btn{--btn-lift: -1px;--btn-label: var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;min-width:44px;padding:10px var(--space-4);border-radius:var(--r-xs);background:var(--plate);color:var(--btn-label);border:var(--hairline) solid var(--grid);font-family:var(--font-body);font-size:var(--fs-500);font-weight:600;text-decoration:none;transition:transform var(--t-tap) var(--ease-out),border-color var(--t-tap) ease,background-color var(--t-tap) ease}button.btn{cursor:pointer}.btn-primary{--btn-label: var(--ground);background:var(--series-2);border-color:var(--series-2);color:var(--btn-label)}.btn-current{--btn-lift: 0px;background:var(--plate-2);color:var(--btn-label);border-color:var(--ink-3);box-shadow:inset 0 calc(-1 * var(--hairline)) 0 var(--series-2)}.btn:hover,.btn:focus-visible{border-color:var(--series-2);color:var(--btn-label);transform:translateY(var(--btn-lift))}.btn:active{transform:none}.btn-primary:focus-visible{outline-color:var(--ink);outline-offset:3px}.plate{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border:var(--hairline) solid var(--grid);border-radius:var(--r-xs);background:var(--plate)}.plate-label{font-family:var(--font-mono);font-size:var(--fs-200);font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0}.plate-footnote{margin:0;padding-top:var(--space-3);padding-right:max(0px,100% - var(--measure-mono));border-top:var(--hairline) solid var(--grid);color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-400);line-height:1.6;max-width:none}.plate-footnote a{overflow-wrap:anywhere}.plate>.plate-footnote:last-child{margin-top:auto}.system-copy>.project-links:last-child,.skills-block>.skills-row:last-child,.hero-tail>.hero-email-plain:last-child{margin-bottom:0}.axis-rule{position:relative;height:5px;margin-bottom:var(--space-4);border-top:var(--hairline) solid var(--grid);background-image:linear-gradient(270deg,var(--axis) 0 var(--hairline),transparent var(--hairline));background-repeat:repeat-x;background-size:25% 5px;background-position:right 0 top 0}.readout{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0}.readout-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2);min-width:0}.readout-value{color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-700);font-weight:600;line-height:1.2}.readout-label{color:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-400);line-height:1.4}.readout-plain{display:block;margin-top:2px;color:var(--ink-3);font-family:var(--font-body);font-size:var(--fs-400);line-height:1.4}.callout{position:relative;display:inline-flex;align-items:center;gap:var(--space-2);color:var(--series-2);font-family:var(--font-mono);font-size:var(--fs-300);line-height:1.4}.callout:before{content:"";width:var(--callout-leader, 18px);height:var(--hairline);flex:none;background:var(--series-2)}.chip,.proof-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--space-1) var(--space-3);border-radius:var(--r-chip);border:var(--hairline) solid var(--grid);background:var(--plate);font-family:var(--font-mono);font-size:var(--fs-300);color:var(--ink);white-space:nowrap}.proof-chip .dot{width:6px;height:6px;border-radius:50%;background:var(--series-3);flex:none}@supports (margin-top: 1lh){.chip,.proof-chip{align-items:flex-start}.proof-chip .dot{margin-top:calc((1lh - 6px)/2)}}.chip-rail{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.section{padding-top:var(--section-gap)}.section h2{font-size:clamp(var(--fs-850),4.4vw,var(--fs-900))}.section~.section{padding-top:calc(var(--section-gap) * .66)}.section~.section h2{font-size:var(--fs-800)}.section.section--rank-1{padding-top:var(--section-gap)}.section.section--rank-1 h2{font-size:clamp(var(--fs-850),4.4vw,var(--fs-900))}.section.section--rank-2{padding-top:calc(var(--section-gap) * .66)}.section.section--rank-2 h2{font-size:var(--fs-800)}.section-head{margin-bottom:var(--space-6)}.section-head h2{margin-top:0}@media (max-width: 767px){:root{--section-gap: var(--space-8)}}.sheet-block{background:var(--surface-figure);border:var(--hairline) solid var(--rule);border-radius:var(--r-xs);padding:var(--space-5);transition:border-color var(--t-hover) var(--ease-out)}.spec-col-head{font-family:var(--font-mono);font-size:var(--fs-200);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-secondary);padding-bottom:var(--space-2);margin-bottom:var(--space-3);border-bottom:var(--hairline) solid var(--rule)}.spec-notes p{font-size:var(--fs-600);color:var(--ink);margin:0 0 var(--space-3);max-width:none}.sheet-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5)}@media (min-width: 768px){.sheet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sheet-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.sheet-block h3 a{color:var(--ink)}@media (max-width: 767px){.sheet-block h3 a,.system-copy h3 a,.hero-readout-repo,.sweep-source{display:inline-block;padding-block:10px;margin-block:-10px}}.hero{padding-top:var(--space-7)}.hero .kicker{margin-bottom:var(--space-4);font-size:var(--fs-400);text-wrap:balance}.hero h1{max-width:var(--measure-tight);margin-bottom:var(--space-5)}.hero-subhead{font-size:var(--fs-700);line-height:1.45;max-width:46ch;margin-bottom:var(--space-4);text-wrap:pretty}.hero-availability{margin-bottom:0}.hero-availability .proof-chip{font-size:var(--fs-500);line-height:1.4;white-space:normal}.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.hero-email-plain{font-family:var(--font-mono);font-size:var(--fs-400);color:var(--ink-2);margin-top:var(--space-4)}.hero-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:start}.hero-layout{grid-template-areas:"lead" "rail" "tail"}.hero-lead{grid-area:lead}.hero-side{grid-area:rail}.hero-tail{grid-area:tail}@media (min-width: 1024px){.hero-layout{grid-template-columns:minmax(0,1fr) minmax(420px,1fr);grid-template-areas:"lead rail" "tail rail";gap:var(--space-6) var(--space-8)}.hero-aws{padding-top:var(--space-4);border-top:var(--hairline) solid var(--grid)}}.hero-aws{max-width:62ch;margin:0 0 var(--space-6);padding:0 0 var(--space-4);border-bottom:var(--hairline) solid var(--grid);font-size:var(--fs-500);line-height:1.6;color:var(--ink-2);text-wrap:pretty}.hero-aws a{white-space:nowrap}.section-exit{margin:var(--space-6) 0 0;font-size:var(--fs-400)}.skills-block{margin-top:var(--space-6);padding-top:var(--space-6);border-top:var(--hairline) solid var(--grid)}.systems-sweep{margin:0 0 var(--space-7);min-width:0}@media (min-width: 998px){.systems-sweep{max-width:950px}}.hero-readout{display:flex;flex-direction:column}.hero-readout-row{display:grid;grid-template-columns:minmax(0,1fr) 68px minmax(120px,168px);align-items:baseline;column-gap:var(--space-4);padding:var(--space-2) 0;border-top:var(--hairline) solid var(--grid)}.hero-readout-row:last-child{border-bottom:var(--hairline) solid var(--grid)}.hero-readout-repo{font-size:var(--fs-400)}.hero-readout-value{color:var(--ink);font-size:var(--fs-500);font-weight:600;text-align:right;white-space:nowrap}.hero-readout-unit{color:var(--ink-3);font-size:var(--fs-300)}.hero-readout-lead{margin-bottom:var(--space-3);max-width:var(--measure-body);color:var(--ink-2);font-size:var(--fs-500)}.hero-readout-name{display:flex;flex-direction:column;gap:2px}.hero-readout-what{color:var(--ink-2);font-size:var(--fs-300)}@media (max-width: 1023px){.hero-readout,.hero-readout-lead{max-width:34rem}}@media (max-width: 411px){.hero-readout-row{grid-template-columns:minmax(0,1fr);row-gap:var(--space-1)}.hero-readout-value{text-align:left}}.hero-readout-plain{display:block;color:var(--ink-3);font-family:var(--font-body);font-size:var(--fs-300)}.hero-band{background:var(--plate);padding-bottom:var(--space-7);border-bottom:var(--hairline) solid var(--grid);position:relative;isolation:isolate;overflow:hidden;contain:paint}.hero{position:relative;z-index:2}.hero .kicker{color:var(--ink-2)}.hero h1,.hero-subhead{color:var(--ink)}.hero-band .hero-email-plain{color:var(--ink-2)}@media (max-width: 639px){:root{--section-gap: var(--space-6)}.plate,.sheet-block{padding:var(--space-4)}.plate{gap:var(--space-2)}.section-head{margin-bottom:var(--space-3)}.hero-band{padding-bottom:var(--space-6)}.hero{padding-top:var(--space-6)}.hero-lead h1{margin-bottom:var(--space-4)}.hero-subhead{margin-bottom:var(--space-3)}.hero-layout{row-gap:var(--space-5)}.hero-aws{margin-bottom:var(--space-5);padding-bottom:var(--space-3)}.axis-rule{margin-bottom:var(--space-3)}.systems-sweep{margin-bottom:var(--space-6)}.plate-footnote{padding-top:var(--space-2)}.section-exit{margin-top:var(--space-5)}.skills-block{margin-top:var(--space-5);padding-top:var(--space-5)}}.system-list{display:grid;gap:var(--space-5)}.system-feature{display:grid;grid-template-columns:1fr;gap:var(--space-6);align-items:stretch}.system-copy,.system-evidence{min-width:0}.system-summary{margin-top:var(--space-3);font-size:var(--fs-600)}.system-proof{margin-top:var(--space-4);color:var(--ink);font-weight:600}.system-aside{color:var(--ink-2)}.system-evidence{display:flex;flex-direction:column;justify-content:flex-start;gap:var(--space-6);padding-top:var(--space-2);border-top:var(--hairline) solid var(--grid)}@media (max-width: 639px){.system-feature,.system-evidence{gap:var(--space-3)}.system-copy>.kicker,.system-summary,.system-aside{margin-bottom:var(--space-3)}.system-proof{margin-top:var(--space-3);margin-bottom:var(--space-3)}.system-copy>.project-links{margin-top:var(--space-2)}}.system-diagram{display:flex;flex-wrap:wrap;position:relative;align-items:center;justify-content:flex-start;row-gap:0;column-gap:10px;min-height:176px;padding-right:var(--space-3);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-200)}.diagram-stage,.diagram-node,.diagram-sstables span{display:inline-flex;align-items:center;justify-content:center;min-width:52px;min-height:40px;padding:6px var(--space-2);border:var(--hairline) solid var(--ink-3);background:var(--ground)}@media (max-width: 639px){.system-diagram{display:none}}.diagram-stage{border-radius:var(--r-xs);white-space:nowrap}.diagram-flow{position:relative;width:24px;height:var(--hairline);flex:0 1 24px;background:var(--ink-3)}.diagram-flow:after{content:"";position:absolute;right:-1px;top:-3px;width:6px;height:6px;border-top:var(--hairline) solid var(--ink-3);border-right:var(--hairline) solid var(--ink-3);transform:rotate(45deg)}.diagram-nodes,.diagram-sstables{display:grid;gap:6px}.diagram-node{min-width:42px;min-height:42px;padding:0;border-radius:50%}.diagram-node.is-leader{border-color:var(--series-3);color:var(--series-3)}.diagram-sstables span{min-height:28px;border-radius:var(--r-xs)}.diagram-caption{flex:0 0 100%;margin-top:var(--space-3);color:var(--ink-2)}.diagram-ann .diagram-node{min-width:58px;min-height:40px;padding:6px 10px;border-radius:var(--r-xs);white-space:nowrap}@media (min-width: 1024px){.system-feature{grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr)}.system-evidence{padding-top:0;padding-left:var(--space-6);border-top:0;border-left:var(--hairline) solid var(--grid)}}@media (max-width: 479px){.system-diagram{min-height:150px;column-gap:3px;font-size:var(--fs-100)}.diagram-stage,.diagram-sstables span{min-width:42px;padding-right:var(--space-1);padding-left:var(--space-1)}.diagram-flow{width:8px;flex-basis:8px}}.page-head-band{background:var(--plate);padding-bottom:var(--space-7);position:relative;isolation:isolate;overflow:hidden}.page-head-band h1{color:var(--ink)}.page-head-band .page-dek{color:var(--ink-2)}.page-head{padding-top:var(--space-8)}.page-head h1{margin-bottom:var(--space-4)}.page-dek{font-size:var(--fs-700);line-height:1.45;color:var(--ink-2);max-width:var(--measure-body)}.alt-timeline{list-style:none;position:relative;margin:var(--space-6) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-6)}.alt-timeline:before{content:"";position:absolute;top:4px;bottom:4px;left:7px;width:2px;background:var(--grid)}.alt-timeline-item{position:relative;margin-left:36px}.alt-timeline-item:before{content:"";position:absolute;top:26px;left:-34px;width:12px;height:12px;border-radius:50%;background:var(--series-2);border:2px solid var(--ground);z-index:1}.alt-timeline-item:after{content:"";position:absolute;top:33px;left:-28px;width:28px;height:2px;background:var(--grid)}.alt-timeline-label{position:relative;margin-left:36px;z-index:1}.alt-timeline-label h3{margin:0;font:inherit}.alt-timeline-label span{display:inline-block;background:var(--plate);border:var(--hairline) solid var(--grid);border-radius:var(--r-chip);padding:6px var(--space-4);font-family:var(--font-mono);font-size:var(--fs-200);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}@media (min-width: 900px){.alt-timeline{display:grid;grid-template-columns:1fr 1fr;gap:40px 88px}.alt-timeline:before{left:50%;margin-left:-1px}.alt-timeline-item{margin-left:0}.alt-timeline-item.tl-left{grid-column:1}.alt-timeline-item.tl-right{grid-column:2}.alt-timeline-item.tl-left:before{left:auto;right:-50px}.alt-timeline-item.tl-right:before{left:-50px}.alt-timeline-item.tl-left:after{left:auto;right:-44px;width:44px}.alt-timeline-item.tl-right:after{left:-44px;width:44px}.alt-timeline-label{grid-column:1 / -1;justify-self:center;margin-left:0}}.role-card{position:relative}.role-card-head{display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;align-items:start}.role-logo{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border:var(--hairline) solid var(--grid);border-radius:var(--r-xs);background:var(--logo-chip);overflow:hidden}.role-logo-pad{padding:6px 5px}.role-logo-img{width:100%;height:100%;object-fit:contain}.role-logo-wide{width:100%;height:auto}.role-org{font-weight:600;margin-top:2px}.role-meta{font-family:var(--font-mono);font-size:var(--fs-400);color:var(--ink-2);margin-top:var(--space-1)}.project-license{font-family:var(--font-mono);font-size:var(--fs-300);color:var(--ink-3);margin-top:var(--space-1)}.role-bullets{margin:var(--space-3) 0 0;padding-left:20px}.role-bullets li{margin-bottom:var(--space-2);max-width:var(--measure-prose);overflow-wrap:break-word}.hobby-intro{max-width:var(--measure-body);margin-bottom:var(--space-6);color:var(--ink-2)}.hobby-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6);align-items:start;padding-bottom:var(--space-6);border-bottom:var(--hairline) solid var(--grid)}@media (max-width: 639px){.hobby-intro{margin-bottom:var(--space-5)}.hobby-grid{row-gap:var(--space-5);padding-bottom:var(--space-5)}}@media (min-width: 1024px){.hobby-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--space-6);row-gap:var(--space-2);grid-template-rows:auto auto auto}}.hobby-blurb{margin:0 0 var(--space-2);font-size:var(--fs-700);color:var(--ink)}.hobby-lead{margin:0 0 var(--space-4);font-size:var(--fs-500);line-height:1.6;color:var(--ink-2);text-wrap:pretty}.hobby-cell>.feed-fig{max-width:440px}.feed-fig{margin:0}.feed-list{margin:0;display:flex;flex-direction:column}.feed-row{padding:var(--space-3) 0;border-top:var(--hairline) solid var(--grid)}.feed-row:first-child{border-top:0;padding-top:0}.feed-list dt{font-family:var(--font-mono);font-size:var(--fs-200);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.feed-list dd{margin:var(--space-1) 0 0;font-size:var(--fs-400);color:var(--ink)}@media (min-width: 360px) and (max-width: 639px){.feed-list{display:grid;grid-template-columns:max-content minmax(0,1fr)}.feed-row{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:baseline;column-gap:var(--space-4)}.feed-list dd{margin-top:0}}.hobby-cell{display:flex;flex-direction:column;align-items:stretch}@media (min-width: 1024px){.hobby-cell{display:grid;grid-template-rows:subgrid;grid-row:span 3}.hobby-cell>figure{align-self:start}.hobby-cell>.hobby-lead{align-self:start}}.btn-copy-email{display:none}.js .btn-copy-email{display:inline-flex}.edu-card{max-width:720px}@media (min-width: 1024px){.edu-card{max-width:none}}.edu-card .edu-degree{margin-top:var(--space-1)}.edu-card .role-meta{margin-top:6px}.edu-detail{margin:var(--space-2) 0 0;font-size:var(--fs-400)}.edu-coursework{margin:var(--space-3) 0 0;font-family:var(--font-mono);font-size:var(--fs-300);line-height:1.7;color:var(--ink-3);max-width:var(--measure-mono)}@media (max-width: 639px){.edu-card .edu-degree,.edu-card .role-meta{margin-bottom:var(--space-2)}.edu-coursework{margin-top:var(--space-2)}}.skills-row{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-5)}@media (max-width: 639px){.skills-row{margin-bottom:var(--space-4)}}@media (min-width: 768px){.skills-row{display:grid;grid-template-columns:180px minmax(0,1fr);gap:var(--space-5);align-items:baseline}}.skills-line{margin:0;font-family:var(--font-mono);font-size:var(--fs-300);line-height:1.8;color:var(--ink-2);max-width:none}.skills-label{font-family:var(--font-mono);font-size:var(--fs-300);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.project-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3);margin-top:var(--space-1)}.project-links{margin-top:var(--space-3);font-size:var(--fs-400);overflow-wrap:anywhere}.contact-band{margin-top:var(--section-gap);background:color-mix(in srgb,var(--plate) 78%,var(--plate));border-top:var(--hairline) solid var(--grid);border-bottom:var(--hairline) solid var(--grid)}.contact-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(min(300px,100%),.8fr);gap:var(--space-8);align-items:start;padding-top:var(--space-8);padding-bottom:var(--space-8)}.contact-copy .kicker{margin-bottom:var(--space-3)}.contact-copy h2{margin-bottom:var(--space-4);font-size:var(--fs-800)}.contact-copy p:last-child{margin-bottom:0;color:var(--ink-2)}.contact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.contact-email,.footer-email{overflow-wrap:anywhere}.contact-email{width:100%;color:var(--ink-2);font-size:var(--fs-300)}.cta-text-link{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.3em;min-height:44px}@media (max-width: 767px){.contact-layout{grid-template-columns:1fr;gap:var(--space-6);padding-top:var(--space-7);padding-bottom:var(--space-7)}}@media (max-width: 639px){.contact-layout{row-gap:var(--space-5);padding-top:var(--space-6);padding-bottom:var(--space-6)}.contact-copy h2{margin-bottom:var(--space-3)}}.footer{background:var(--plate);border-top:none;padding:var(--space-7) 0;margin-top:0}.footer-links{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.footer-email{font-size:var(--fs-400);color:var(--ink-2)}.footer-colophon{margin-top:var(--space-6);font-family:var(--font-mono);font-size:var(--fs-300);color:var(--ink-2);display:flex;flex-wrap:wrap;gap:8px 24px}.footer-colophon p{margin:0;max-width:none}.footer-email,.footer-colophon{color:var(--ink-2)}@media (max-width: 639px){.footer{padding:var(--space-6) 0}.footer-colophon{margin-top:var(--space-5)}}.not-found{padding-top:var(--section-gap);padding-bottom:var(--section-gap)}.not-found h1{margin-bottom:var(--space-4)}.not-found-plate{max-width:420px;margin:0 0 var(--space-6)}.nf-axis,.nf-tick{fill:none;stroke:var(--axis);stroke-width:1px;vector-effect:non-scaling-stroke}.nf-note{fill:var(--ink-3);font-family:var(--font-mono);font-size:var(--fs-200)}.not-found .cta-row{margin-top:var(--space-6)}.nav-brand svg{transition:transform var(--t-tap) ease}.nav-brand:hover svg,.nav-brand:focus-visible svg{transform:translateY(-1px)}.sheet-live:hover,.sheet-live:focus-within{transform:translateY(-2px);border-color:var(--series-2)}.sheet-live:hover h3 a,.sheet-live:focus-within h3 a{text-decoration-thickness:2px}.role-card:hover,.edu-card:hover{border-color:var(--ink-3)}.alt-timeline-item:before{transition:transform var(--t-hover) var(--ease-out)}.alt-timeline-item:after{transition:background-color var(--t-hover) ease}.alt-timeline-item:hover:before,.alt-timeline-item:focus-within:before{transform:scale(1.35)}.alt-timeline-item:hover:after,.alt-timeline-item:focus-within:after{background:color-mix(in srgb,var(--series-2) 40%,var(--grid))}.chip,.proof-chip{transition:border-color .15s ease,background-color .15s ease}.chip:hover{border-color:color-mix(in srgb,var(--series-2) 25%,var(--grid));background:color-mix(in srgb,var(--series-2) 4%,var(--plate))}a{transition:color var(--t-tap) ease,text-decoration-thickness var(--t-tap) ease}a:hover,a:focus-visible{text-decoration-thickness:2px;text-underline-offset:3px}.arrow{display:inline-block;transition:transform var(--t-hover) var(--ease-out)}a:hover .arrow,a:focus-visible .arrow{transform:translate(4px)}.sheet-grid>.reveal>.sheet-block{height:100%}.sheet-grid .sheet-block{display:flex;flex-direction:column}.sheet-grid .sheet-block>p{margin-bottom:0}.sheet-grid .sheet-block>.chip-rail:last-child,.sheet-grid .sheet-block>.project-links:last-child{margin-top:auto;padding-top:12px}#progress-rail{--scroll-progress: 0;--scroll-position: 0%;position:absolute;left:12px;right:12px;bottom:-3px;height:7px;z-index:2;pointer-events:none}.route-progress:before,.route-progress-fill{content:"";position:absolute;top:3px;left:0;right:0}.route-progress:before{top:0;height:7px;background:linear-gradient(270deg,var(--axis) 0 var(--hairline),transparent var(--hairline)) repeat-x right 0 top 3px / 25% 4px,linear-gradient(var(--grid),var(--grid)) no-repeat 0 3px / 100% var(--hairline)}.route-progress-fill{height:var(--hairline);background:var(--series-2);transform:scaleX(var(--scroll-progress));transform-origin:left center;will-change:transform}.route-progress-marker{position:absolute;top:3px;left:clamp(6px,var(--scroll-position),calc(100% - 6px));width:7px;height:7px;border-radius:50%;background:var(--series-2);box-shadow:0 0 0 var(--hairline) var(--plate);transform:translate(-50%,-50%);will-change:left}.kbd-fab{position:fixed;right:20px;bottom:20px;z-index:30;width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-xs);background:var(--plate);color:var(--ink-2);border:var(--hairline) solid var(--ink-3);cursor:pointer;transition:transform var(--t-hover) var(--ease-out),border-color var(--t-hover) ease,color var(--t-hover) ease}.kbd-fab:hover,.kbd-fab:focus-visible{transform:translateY(-1px);border-color:var(--series-2);color:var(--series-2)}.kbd-fab:active{transform:none}@media (max-width: 639px){.kbd-fab{right:14px;bottom:14px}}@media (pointer: coarse),(max-width: 639px){.kbd-fab{display:none}}.kbd-help{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:start;justify-content:center;overflow:auto;overscroll-behavior:contain;padding:var(--space-5);opacity:0;transition:opacity var(--t-hover) ease}.kbd-help.is-open{opacity:1}.kbd-help[hidden]{display:none}.kbd-help-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--ground) 66%,transparent);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.kbd-help-card{position:relative;width:min(420px,100%);margin:auto;max-height:100%;overflow-y:auto;overscroll-behavior:contain;background:var(--plate);border:var(--hairline) solid var(--ink-3);border-radius:var(--r-xs);padding:var(--space-5);transform:translateY(8px) scale(.98);transition:transform var(--t-hover) var(--ease-out)}.kbd-help.is-open .kbd-help-card{transform:none}.kbd-help-title{font-family:var(--font-display);font-size:var(--fs-700);font-weight:600;margin:0 0 var(--space-4)}.kbd-help-list{list-style:none;margin:0 0 var(--space-2);padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.kbd-help-list a{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:10px var(--space-3);border-radius:var(--r-xs);color:var(--ink);text-decoration:none;transition:background-color var(--t-tap) ease}.kbd-help-list a:hover,.kbd-help-list a:focus-visible{background:color-mix(in srgb,var(--series-2) 10%,var(--plate));color:var(--ink)}.kbd-combo{display:inline-flex;gap:var(--space-1);flex:none}.kbd-help kbd,.kbd-help-foot kbd{font-family:var(--font-mono);font-size:var(--fs-200);line-height:1;min-width:22px;padding:5px 6px;text-align:center;color:var(--ink);background:var(--ground);border:var(--hairline) solid var(--ink-3);border-radius:var(--r-xs)}.kbd-help-foot{margin:var(--space-2) 0 20px;font-family:var(--font-mono);font-size:var(--fs-200);color:var(--ink-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.kbd-help-close{width:100%}@media (prefers-reduced-motion: no-preference){.js .reveal{opacity:0;transform:translateY(14px);transition:opacity var(--t-reveal) ease-out,transform var(--t-reveal) var(--ease-out);transition-delay:var(--reveal-delay, 0ms)}.js .reveal.is-in{opacity:1;transform:none}}@media print{:root{--raw-paper: #ffffff;--raw-stone: #ffffff;--raw-stone-shade: #f4f2ec;--raw-ink: #141310;--raw-ink-blue: #1a4269;--raw-terracotta: #933a19;--raw-sublegend: #4a4845;--raw-rule: #8a8884;--raw-rule-soft: #d8d6d0}html,body{background:#fff!important;color:#141310!important}.js .reveal,.js .hero>*,.js .page-head>*{opacity:1!important;transform:none!important;animation:none!important;transition:none!important}.hero-band,.page-head-band,.contact-band,.nav{background:#fff!important;box-shadow:none!important}.sheet-block,.system-feature,.role-card,.edu-card{background:#fff!important;border:1px solid #d8d6d0!important;box-shadow:none!important;break-inside:avoid}a{color:#1a4269!important;text-decoration:underline}.btn,.btn-primary,.btn-current{background:#fff!important;color:#1a4269!important;border-color:#8a8884!important;box-shadow:none!important;transform:none!important}.hero,.hero-layout{display:block!important}.hero-side,.hero-tail{margin-top:var(--space-6)!important}#progress-rail,.kbd-fab,.kbd-help,.boulder,.system-diagram{display:none!important}.hero-band:before,.hero-band:after,.page-head-band:before,.page-head-band:after{display:none!important}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal,.hero>*,.page-head>*{opacity:1;transform:none}.btn{--btn-lift: 0px}.sheet-live:hover,.sheet-live:focus-within,.kbd-fab:hover,.kbd-fab:focus-visible,.kbd-fab:active,.kbd-help-card,.kbd-help.is-open .kbd-help-card{transform:none}}
