@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}:root{--bg:#0e1116;--bg-2:#141922;--bg-hover:#1a202b;--line:#242b37;--fg:#e6e9ef;--muted:#9aa4b5;--accent:#d9a75a;--accent-hover:#ebc07c;--accent-ink:#1a1304;--ok:#6fbf8a;--font-sans:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", Menlo, Consolas, monospace;--fs-h1:clamp(2.3rem, 5.2vw, 4rem);--fs-h2:clamp(1.7rem, 3.2vw, 2.4rem);--fs-logo:1.6rem;--fs-lead-hero:1.12rem;--fs-lead:1.05rem;--fs-base:1rem;--fs-body:.95rem;--fs-ui:.9rem;--fs-mono:.8rem;--fs-label:.75rem;--fs-micro:.72rem;--tracking-heading:-.01em;--tracking-label:.08em;--gutter:16px;--nav-h:3.5rem;--radius-sm:4px;--radius:6px;--radius-pill:999px;--stroke:2px;--focus-offset:3px;--dot:7px;--bar-pad:.55rem;--halo:3px;--halo-strength:25%;--ring-strength:50%;--dim:.75;--icon-sm:.95rem;--icon:1.15rem;--icon-lg:1.5rem;--icon-stroke:1.8;--icon-gap:.65rem;--dur:.2s;--dur-bar:.25s;--dur-draw:.5s;--dur-loop:1.6s;--dur-blink:1.1s;--ease:ease-out;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-padding-top:calc(var(--nav-h) + env(safe-area-inset-top,0px))}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}body:before{content:"";height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg);position:fixed;inset:0 0 auto}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:var(--accent-ink)}.btn,.copy,.menu-btn,.links a,.code .tab,.code .replay,.status{-webkit-user-select:none;user-select:none}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:var(--stroke) solid var(--accent);outline-offset:var(--focus-offset);border-radius:var(--radius-sm)}main:focus{outline:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{z-index:10;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-size:var(--fs-ui);padding:.5rem .9rem;font-weight:500;position:fixed;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip:focus-visible{outline-color:var(--fg);transform:none}h1,h2,h3{letter-spacing:var(--tracking-heading);text-wrap:balance;margin:0;font-weight:500;line-height:1.15}p{margin:0}code,.mono{font-family:var(--font-mono)}.wrap{max-width:72rem;padding-left:max(var(--gutter), env(safe-area-inset-left,0px));padding-right:max(var(--gutter), env(safe-area-inset-right,0px));margin-inline:auto}section{border-top:1px solid var(--line)}.sec{padding-block:5.5rem}@media (width<=720px){.sec{padding-block:3.5rem}}.eyebrow,.kv dt{font-family:var(--font-mono);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);font-weight:400}.eyebrow{font-size:var(--fs-mono);margin-bottom:1rem}.h2{font-size:var(--fs-h2);max-width:28ch}.lead{color:var(--muted);max-width:62ch;font-size:var(--fs-lead);margin-top:1rem}nav.top{top:env(safe-area-inset-top,0px);z-index:9;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky}nav.top .wrap{height:var(--nav-h);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:relative}.brand{font-family:var(--font-mono);font-weight:500;font-size:var(--fs-body)}.links{font-size:var(--fs-ui);color:var(--muted);gap:1.6rem;display:flex}.links a{position:relative}.status{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--muted);white-space:nowrap;align-items:center;gap:.5rem;display:inline-flex}.status i{width:var(--dot);height:var(--dot);background:var(--ok);box-shadow:0 0 0 var(--halo) color-mix(in srgb, var(--ok) var(--halo-strength), transparent);border-radius:50%}.st-short{display:none}.menu-btn{border:1px solid var(--line);color:var(--fg);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:2.4rem;height:2.2rem;display:none}.menu-btn svg{width:var(--icon);height:var(--icon)}.right{align-items:center;gap:.8rem;display:flex}@media (width<=900px){.menu-btn{display:inline-flex}.links{left:0;right:0;top:var(--nav-h);background:var(--bg);border-bottom:1px solid var(--line);padding-block:.5rem 1rem;padding-left:max(var(--gutter), env(safe-area-inset-left,0px));padding-right:max(var(--gutter), env(safe-area-inset-right,0px));font-size:var(--fs-base);visibility:hidden;opacity:0;gap:0;display:grid;position:absolute;transform:translateY(-.5rem)}.links.open{visibility:visible;opacity:1;transform:none}.links a{border-top:1px solid var(--line);color:var(--fg);padding:.7rem 0}.links a:first-child{border-top:0}nav.top .links a:after{content:none}.links a[aria-current]{font-weight:600}}@media (width<=480px){.st-long{display:none}.st-short{display:inline}}.hero{border-top:0;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);opacity:.35;background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 80% at 80% 20%,#000 20%,#0000 70%);mask-image:radial-gradient(70% 80% at 80% 20%,#000 20%,#0000 70%)}.hero .wrap{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:3rem;padding-block:6rem;display:grid;position:relative}@media (width<=900px){.hero .wrap{grid-template-columns:minmax(0,1fr);padding-block:4rem}}.hero h1{font-size:var(--fs-h1);max-width:14ch}.hero h1 em{color:var(--accent);font-style:normal}.hero .lead{font-size:var(--fs-lead-hero)}.cta{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}.btn{border-radius:var(--radius-sm);font-size:var(--fs-body);border:1px solid var(--line);align-items:center;gap:.5rem;padding:.7rem 1.1rem;font-weight:500;display:inline-flex}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.kv{margin:0;padding:.4rem 0}.kv>div{grid-template-columns:6.5rem minmax(0,1fr);gap:1rem;padding:.75rem 1.2rem;display:grid;position:relative}.kv>div+div{border-top:1px solid var(--line)}.kv dt{font-size:var(--fs-label);padding-top:.15rem}.kv dd{font-size:var(--fs-ui);color:var(--fg);margin:0}@media (width<=480px){.kv>div{grid-template-columns:1fr;gap:.2rem}}.code{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);min-width:0;margin:0;overflow:hidden}.code .bar{padding:var(--bar-pad) 1rem;border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--muted);justify-content:space-between;align-items:center;gap:1rem;display:flex}.code pre{font-family:var(--font-mono);font-size:var(--fs-mono);margin:0;padding:1.1rem 1.2rem;line-height:1.65;overflow-x:auto}.code .tabs{align-self:stretch;gap:1.2rem;min-width:0;display:flex}.code .tab{font:inherit;color:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:0;position:relative}.code .replay{min-width:1.5rem;min-height:1.5rem;font:inherit;font-size:var(--fs-base);color:inherit;cursor:pointer;background:0 0;border:0;padding:0;line-height:1}.code .out{color:var(--muted)}.term:not(.is-tabbed) pre+pre{border-top:1px solid var(--line)}.term.is-tabbed .panels{grid-template-columns:minmax(0,1fr);display:grid;overflow-x:auto}.term.is-tabbed .panels>pre{grid-area:1/1;overflow:visible}.term.is-tabbed .panels>pre:not(.on){visibility:hidden}.term .panels:focus-visible{outline-offset:calc(var(--stroke) * -1)}@media (width<=480px){.code .tab .ext{display:none}}.k{color:var(--accent)}.c{color:var(--muted)}.s{color:var(--ok)}.t{color:var(--fg)}@media (prefers-reduced-motion:no-preference){.code .cursor:after{content:"▍";color:var(--accent);animation:blink var(--dur-blink) steps(2) 4}.term.typing .cursor:after{animation:none}@keyframes blink{50%{opacity:0}}}.cells{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);gap:1px;margin-top:3rem;display:grid;overflow:hidden}.cells-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cells-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cells>div{background:var(--bg);min-width:0;padding:1.6rem 1.5rem;position:relative}.cells h3{font-size:var(--fs-lead);margin-bottom:.6rem}.cells p{color:var(--muted);font-size:var(--fs-body)}.cells-4>div{grid-template-columns:auto minmax(0,1fr);align-content:start;align-items:center;column-gap:.75rem;display:grid}.cells-4 h3{margin-bottom:0}.cells-4 p{grid-column:1/-1;margin-top:.75rem}.card-icon{width:var(--icon-lg);height:var(--icon-lg);color:var(--muted);fill:none;stroke:currentColor;stroke-width:var(--icon-stroke);stroke-linecap:round;stroke-linejoin:round;display:block;overflow:visible}.card-icon .car{stroke-width:2.6px;stroke-dasharray:9 91;opacity:0}.card-icon .check{stroke-dasharray:1}.card-icon .person{transform-box:fill-box}@media (width<=980px){.cells-4,.cells-3{grid-template-columns:repeat(2,minmax(0,1fr))}.cells>div:last-child:nth-child(odd){grid-column:1/-1}}@media (width<=560px){.cells-4{grid-template-columns:minmax(0,1fr)}.cells-3>div{padding:1.2rem 1rem}}.tech ul{gap:.6rem;margin:.9rem 0 0;padding:0;list-style:none;display:grid}.tech h3{color:var(--accent)}.tech li{align-items:center;gap:var(--icon-gap);font-size:var(--fs-ui);display:flex}.tech li svg,.edu svg{width:var(--icon);height:var(--icon);fill:currentColor;color:var(--muted);flex:none}.telaio{background:var(--bg-2)}.telaio .wrap{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:3.5rem;display:grid}@media (width<=900px){.telaio .wrap{grid-template-columns:minmax(0,1fr)}}.logo-mark{font-family:var(--font-mono);font-size:var(--fs-logo);align-items:baseline;gap:.6rem;font-weight:500;display:inline-flex}.logo-mark svg{color:var(--accent);width:var(--fs-logo);height:var(--fs-logo);align-self:center}.feat{gap:.9rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.telaio .code{background:var(--bg)}.feat li{grid-template-columns:var(--icon) minmax(0, 1fr);gap:var(--icon-gap);color:var(--muted);font-size:var(--fs-body);display:grid}.feat li b{color:var(--fg);font-weight:500}.feat li svg{width:var(--icon);height:var(--icon);color:var(--muted);margin-top:.2rem}.badges{font-family:var(--font-mono);font-size:var(--fs-label);flex-wrap:wrap;gap:.5rem;margin-top:1.5rem;display:flex}.badges span{border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--muted);padding:.25rem .7rem}.support{border-left:var(--stroke) solid var(--accent);color:var(--muted);font-size:var(--fs-body);margin-top:2rem;padding:1.2rem 1.4rem}.support b{color:var(--fg);font-weight:500}.support a,.edu a,.about-body a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-underline-offset:.2em}.telaio .h2{margin-top:1.2rem}.edu{font-size:var(--fs-body);color:var(--muted);gap:.6rem;margin:2rem 0 0;padding:0;list-style:none;display:grid}.edu li{align-items:center;gap:var(--icon-gap);display:flex}.timeline{gap:0;margin-top:3rem;display:grid}.job{border-top:1px solid var(--line);grid-template-columns:11rem minmax(0,1fr);gap:2rem;padding-block:1.8rem;display:grid}.job:last-child{border-bottom:1px solid var(--line)}@media (width<=720px){.job{grid-template-columns:minmax(0,1fr);gap:.6rem}}.job .when{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--muted);padding-top:.25rem}.job h3{font-size:var(--fs-lead)}.job .org{color:var(--muted);font-size:var(--fs-body);margin-top:.15rem}.job .what{color:var(--muted);font-size:var(--fs-body);max-width:65ch;margin-top:.8rem}.job .stack{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--accent);margin-top:1rem}.about .wrap{grid-template-columns:minmax(0,1fr) 20rem;grid-template-areas:"head photo""body photo";align-items:start;column-gap:3.5rem;display:grid}.about-head{grid-area:head}.about-body{grid-area:body}.about-photo{top:calc(var(--nav-h) + 2rem);grid-area:photo;margin:0;position:sticky}.about-photo img{border-radius:var(--radius);filter:saturate(.85)brightness(.92);width:100%;height:auto;display:block}@media (width<=900px){.about .wrap{grid-template-columns:minmax(0,1fr);grid-template-areas:"head""photo""body"}.about-photo{max-width:16rem;margin-top:2rem;position:static}}@media (prefers-contrast:more){.about-photo img{filter:none}}@media (forced-colors:active){.links a:after,.code .tab:after,.cells>div:after,.kv>div:after{forced-color-adjust:none;background:highlight}.cells>div{outline:1px solid canvastext}}.contact .wrap{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:3rem;display:grid}@media (width<=900px){.contact .wrap{grid-template-columns:minmax(0,1fr)}}.chan{border:1px solid var(--line);border-radius:var(--radius);gap:0;display:grid;overflow:hidden}.chan>div{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;min-width:0;padding:.95rem 1.2rem;display:flex}.chan>div:first-child{border-top:0}.chan .l{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--muted);flex:none;align-items:center;gap:.55rem;width:6.5rem;display:inline-flex}.chan .l svg{width:var(--icon-sm);height:var(--icon-sm);flex:none}.chan .v{overflow-wrap:anywhere;min-width:0;font-size:var(--fs-body);flex:1}@media (width<=480px){.chan>div{flex-wrap:wrap;gap:.3rem 1rem}.chan .l{width:100%}}.copy{font-family:var(--font-mono);font-size:var(--fs-micro);border:1px solid var(--line);color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:.3rem .6rem}.avail{font-size:var(--fs-body);color:var(--muted);gap:.5rem;margin:1.5rem 0 0;padding:0;list-style:none;display:grid}.avail li{padding-left:1.4rem;position:relative}.avail li:before{content:"✓";color:var(--ok);font-family:var(--font-mono);position:absolute;left:0}footer{border-top:1px solid var(--line)}footer .wrap{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-block:1.6rem;display:flex}.links a:after,.code .tab:after,.cells>div:after,.kv>div:after{content:"";height:var(--stroke);background:var(--accent);transform-origin:0;position:absolute;transform:scaleX(0)}.links a:after{inset:auto 0 -.45rem}.code .tab:after{inset:auto 0 calc(var(--bar-pad) * -1 - 1px)}.cells>div:after,.kv>div:after{inset:0 0 auto}.brand:focus-visible,.status:focus-visible,.links a:focus-visible,.links a[aria-current],.code .tab:focus-visible,.code .replay:focus-visible,.code .tab[aria-pressed=true]{color:var(--accent)}.menu-btn:focus-visible,.menu-btn[aria-expanded=true]{color:var(--accent);border-color:var(--accent)}.links a:focus-visible:after,.links a[aria-current]:after,.code .tab[aria-pressed=true]:after{transform:scaleX(1)}@media (hover:hover) and (pointer:fine){.brand:hover,.status:hover,.links a:hover,.code .tab:hover,.code .replay:hover,.chan a.v:hover,.chan>div:hover .l svg,.tech>div:hover li svg,.feat li:hover svg,.cells>div:hover .card-icon{color:var(--accent)}.menu-btn:hover,.badges span:hover{color:var(--accent);border-color:var(--accent)}.links a:hover:after,.cells>div:hover:after,.kv>div:hover:after{transform:scaleX(1)}.cells>div:hover{background:var(--bg-2);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) var(--ring-strength), transparent)}.cells:has(>div:hover)>div:not(:hover)>*{opacity:var(--dim)}.kv>div:hover{background:var(--bg-hover)}.support a:hover,.edu a:hover,.about-body a:hover{text-decoration-color:currentColor}.btn:not(.primary):hover{color:var(--accent);border-color:var(--accent)}.copy:hover{border-color:var(--muted);color:var(--fg)}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 0 0 var(--halo) color-mix(in srgb, var(--accent) var(--halo-strength), transparent)}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.brand,.status,.links a,.code .tab,.code .replay,.badges span,.menu-btn,.btn,.copy,.chan a.v,.chan .l svg,.tech li svg,.feat li svg,.card-icon,.cells>div,.cells>div>*,.kv>div{transition-property:color,background-color,border-color,box-shadow,opacity;transition-duration:var(--dur);transition-timing-function:var(--ease)}.links a:after,.code .tab:after,.cells>div:after,.kv>div:after{transition:transform var(--dur-bar) var(--ease)}.links{transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility 0s linear var(--dur)}.links.open{transition-delay:0s}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.cells>div:hover .card-icon .flow{stroke-dasharray:2 2.6;animation:flow var(--dur-loop) linear infinite}.cells>div:hover .card-icon .check{animation:draw var(--dur-draw) var(--ease) both}.cells>div:hover .card-icon .track{opacity:.35}.cells>div:hover .card-icon .car{opacity:1;animation:lap var(--dur-loop) linear infinite}.cells>div:hover .card-icon .person{animation:nod var(--dur-loop) ease-in-out infinite}.cells>div:hover .card-icon .person:nth-child(2){animation-delay:calc(var(--dur-loop) / 8)}.cells>div:hover .card-icon .person:nth-child(3){animation-delay:calc(var(--dur-loop) / 4)}@keyframes flow{to{stroke-dashoffset:-9.2px}}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes lap{to{stroke-dashoffset:-100px}}@keyframes nod{0%,50%,to{transform:translateY(0)}25%{transform:translateY(-1.5px)}}}
